2

わかりました、私はかなり簡単な質問があります:vimコマンド/ホットキーをバインドして複雑なシェルスクリプトを実行するにはどうすればよいですか?

たとえば、cssファイル内のbase64でインライン化された画像を最適化したい。シェルでは次のようになります。

echo `selection` > /tmp/img.png.b64
base64 -d /tmp/img.png.b64 > /tmp/img.png
optipng -o7 /tmp/img.png
base64 -w 0 /tmp/img.png > `selection`

selectionスクリプトに入れて、スクリプト実行の結果を取得し、選択したコンテンツをその結果に置き換えたいと思います。ワークフローは、ビジュアルブロックモードでbase64パーツを選択し、egと入力:'<,'>optipngするか、ホットキーを押すと表示されます。問題は、それを行うためにvimをどのように設定するかです。

4

1 に答える 1

1

Vimでは、 。を使用した外部コマンドを使用してラインをフィルタリング:[range]!{cmd}できます。optipngコマンドがstdinから入力を受け取り、stdoutに出力できる場合は、それを直接使用できます。それ以外の場合は、小さなシェルスクリプトラッパーの助けを借りて。詳細:help :range!はをご覧ください。

1つの制限は、視覚的に選択した場合でも、これは部分ではなく、行全体に対してのみ機能することです。これはvisプラグインで回避できます; その場合、次のようになります。

:'<,'>B !optipng -o7
于 2013-03-04T13:34:04.007 に答える