Vifm:選択したファイルごとに個別にコマンドを実行する

Vifm:選択したファイルごとに個別にコマンドを実行する

forループシミュレーションが欲しいビビム

ファイルを選択しない場合は、現在のファイル名を引数として入力して出力:!echo %fを表示できます。echo

複数のファイルを選択した場合、:!echo %f生成された出力は、選択したechoすべてのファイル名がスペースと引数で連結された場所です。

echo選択した各ファイルに任意のプログラム(例:)を適用するにはどうすればよいですか?だから

echo file1
echo file2
echo file3
...

変える

echo file1 file2 file3

私のオプションは何ですか?

PS:次のBashコードのVifmシミュレーションが欲しいです。

for f in file1 file2 file3; do
  echo $f
done

答え1

オプション1:カスタムコマンド

:com loop for f in %f; do %a "$f"; done

~/.config/vifm/vifmrc必ずコマンド設定に入れてください。

ls -l選択した各ファイルに適用するには、以下を発行します。

:loop ls -l

2つのマクロが使用されます。

  • %f選択したファイル名を正しく引用してください。
  • %a議論。私達の例ではlsおよび-l

オプション2:地図

:noremap b :!for f in %f; do  "$f"; done<A-B><A-B><Left>

常に地図設定を維持するには、もう一度入力してください~/.config/vifm/vifmrc

通常モードまたはビジュアルモードでキーを押すとコマンドラインbにforループが表示され、カーソルは間に便利な位置にあるので、do必要な"$f"コマンドを入力してキーを押すだけですEnter

<A-B><A-B><Left>カーソルの位置決めは、コマンドラインモードでAlt+Bカーソルを前の単語の先頭に移動しLeft(明らかに)左に1行移動することによって行われます。

ノート&:実行に時間がかかり、Vifmの実行中にブロックされたくない場合は、このコマンドをバックグラウンドに追加することを忘れないでください。

答え2

これにより、所望の出力が生成される。

:!echo %f | xargs -n 1 echo

もちろん、for使いやすいようにコマンド(たとえば)を定義できます。

:com for echo %f | xargs -n 1

次に、次のように入力します。

:for echo

関連情報