web-dev-qa-db-ja.com

Midnight Commander —複数選択

MCでは、現在のファイルの名前をファイルのリストからコンソールにコピーできます。 Ctrl+Enter

複数のファイルをコンソールにコピーしたいとします。例:複数のファイルで*.Zipを作成したい:

Zip new_Zip.zip a.txt b.txt c.txt 231202fkfo3f.txt 

Insert(または同等のもの)を使用して複数のファイルを選択できます。 Ctrl+t)。その後、選択したすべてのファイル名をコンソールに直接移動するために1つのショートカットを使用したいと思います。何かのようなもの Ctrl+Enter

それを行う方法は何ですか?

4
Andrey Bzikadze

を押すと Ctrl+xt、タグを付けたすべてのファイルの名前が貼り付けられます Ctrl+t または Insert コマンドラインに。

3
jursetto

同様の組み込みソリューションは、 F2 ユーザーメニュー。これは「タグ付けされたファイルに対して何かを行う」と呼ばれ、指定されたコマンドをファイルに対して1つずつ実行します。

このメニューに新しいコマンドを追加できます。それは少しトリッキーな解決策ですが、私にとってはうまくいきました。 (サブシェルのサポートが必要です。)

ユーザーメニューの設定ファイルは通常、次の場所にあります。

/etc/mc/mc.menu

私の解決策は、「タグ付けされたファイルに対して何かをする」に基づいています。私はその行をコピーし、次のように変更しました:

+ t t
p       Put selected files to history
    set %t
    while [ -n "$1" ]; do
      STR="$STR \\\"$1\\\""
      shift
    done
    bash -ic "history -s $STR" > /dev/null

最初の行は、複数のファイルが選択されている場合にのみ表示されることを意味します。 2行目には、ユーザーメニュー内にタイトルとショートカットが含まれています(p)。その後、選択したファイル名を履歴に追加するシェルスクリプトが登場します。

これらの行をmc.menuに追加し、集計に注意してください。 1行目と2行目には集計がなく、スクリプトはTABで集計されています。そうしないと、mcはそれを解析できません。

その後、いくつかのファイルを選択してを押す必要があります F2。新しく追加した「選択したファイルを履歴に入れる」を押します。現在、それらは履歴に追加されていますが、使用するには再読する必要があります。押す CtrlO、コマンドラインにhistory -rと入力する必要があります。最後に、を押して選択したファイル名を見つけます UP キー。

別の解決策を使用することもできます。おそらく、文字列を端末に出力する方が簡単で、その後はコピーして貼り付けることができます。次のスクリプトはこれを実装します。

+ t t
p       Print selected files to subshell
    set %t
    while [ -n "$1" ]; do
      STR="$STR \"$1\""
      shift
    done
    echo "$STR"
1
szkj