2

:%!/path/to/script を使用して、vim テキスト ウィンドウで perl スクリプトを実行できることを知りました。入力するset filter1 = /path/to/scriptだけでよい方法はあり:%!filter1ますか?

4

2 に答える 2

5

cabbrev次のようなコマンドライン省略形を作成するために使用できます。

:cabbrev filter1 /path/to/script

filter1タイプの後にスペースが続く場合、に展開され/path/to/scriptます。%!また、この組み合わせでのみ使用する場合は、略語に the を入れることもできます。

明らかに、このフィルターを頻繁に使用する場合は、このためのキーバインドを作成する方が簡単かもしれません:

map ,f :%!/path/to/script<cr>

,fこれは、フィルターの実行にマップされます...

于 2013-01-15T10:14:54.480 に答える
2

スクリプトを のどこかに配置することもできます$PATH

このscriptnameコマンドは、vim (およびその他のプログラム) でコマンド ラインで使用できるようになりました。

:!scriptname<CR>

明らかに、そのコマンドを頻繁に使用する場合は、~/.vimrc.

編集

Mac OS X では、すべてのターミナル エミュレータがデフォルトでログイン シェルを使用します。つまり、日常的な端末の使用では、エイリアスを定義したり$PATH、. このコンテキストでは、まったく役に立ちません。~/.bash_login~/.profile~/.bashrc

しかし、MacVim はデフォルトではログイン シェルを使用しません。実際、対話型シェルも使用していません。直接の結果として、デフォルトでは、MacVim は環境変数 ( export FOO='bar') を認識できますが、エイリアス ( alias foo='bar') またはシェル変数 ( BAZ='foo') が に設定されているかどうかに~/.bash_login関係~/.profileなく、認識できません~/.bashrc

ありがたいことに、Vim のオプションを変更して対話型シェルを使用するだけで済み、次のように で定義されたエイリアスが表示され~/.bashrcます。

:set shellcmdflag=-ic

しかし、最終的に と の 2 つの構成ファイルが作成され~/.profileます~/.bashrc。最初に定義されたエイリアスはすべてのターミナル セッションで使用できますが、Vim では使用できません。2 番目に定義されたエイリアスは Vim で使用できますが、通常のターミナル セッションでは表示されません。

-l解決策の 1 つは、上記のオプションにフラグを追加して、MacVim が対話型ログイン シェルを実行するようにすることです (したがって、 にあるものを利用します~/.profile)。

別の解決策は、私が数年前に行ったようにsource ~/.profileすることです。~/.bashrc

しかし、@ZyX が彼のコメントで正しく示唆しているように、全体が乱雑になり、おそらくパフォーマンスの問題が発生する可能性があります。

私の意見では、Mac OS X での最善の方法は、おそらくshellcmdflagデフォルト値のままにして、日常の端末の使用に必要なエイリアス/変数/関数を~/.profile(そう~/.bashrcではないためではない) に置くことです。デフォルトで実行されます)、カスタム スクリプトを$PATH.

于 2013-01-15T10:21:47.287 に答える