VIMで外部コマンドを接続する方法は?

VIMで外部コマンドを接続する方法は?

VISUALモードのVIMバッファで次のテキストを選択すると、

f() { 
  echo "f"; 
} 
f 

その後実行

:'<,'>w !xclip | !eval "$(xclip -o)"

わかりました。

/bin/bash: eval: line 3: syntax error near unexpected token `('
/bin/bash: eval: line 3: `feval f() {'

最初のコマンドがVISUAL選択をシステムクリップボードにコピーし、2番目のコマンドがそれを使用して評価するようにこれら2つのコマンドを正しくリンクするにはどうすればよいですかeval

答え1

この試み:

'<,'>w !xclip | eval "$(xclip -o)"

一度だけ使用する必要があり、!vimはそのコマンドを1つのコマンドとして実行します。

答え2

:'<,'>!xclip && eval "$(xclip -o)"

私のテスト(Bash 4.3、vim 7.4を含むUbuntu 16.04 LTS)は完全に機能し、4行を単一文字「f」に変換します。&&に交換する|ことは可能ですが、お勧めできません。

私はvimを使ってシェルコマンドを実行することが通常のシェルで実行するのと変わらないと思います。

関連情報