Subscribed unsubscribe Subscribe Subscribe

Python, web, Algorithm 技術的なメモ

技術的なメモを書いていきます.pythonistaを目指しています.

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>

これで,vimのエディタで作業中にF5を押せば,pythonファイルが実行出来る.