vimの外部コマンド実行でユーザ定義のalias/functionを実行する方法
vimで作業している時に, .bashrcファイルに自分で定義した,alias,functionが使えない事に気がついた. vimのコマンドモードで,
:! foo
*(fooは.bashrcファイルで定義した関数とする.)
とすると,
/bin/bash: foo: command not found
となる. そこで,
$vim ~/.exrc
.exrcファイルを開き以下の設定を追加すると 自分で定義したコマンドが使えるようになる.
set shellcmdflag=-ic
追記
しかしながら,この設定を加え,
vimからプログラムを実行すると
ー例えば,:!python foo.py
ー,実行しているプロセスをバックグラウンドで実行させて
しまうため,[1]+ Stopped vim foo.py
などと言われてしまう.
従って,
set shellcmdflag=-ic
はあまりよろしくない設定である.
この解消法としては,fg (foreground) コマンドを使う, Shell scriptを書いてそれを実行する,mapを使うが挙げられる.
mapの例
map <F5> <Esc> :! python % <Return>