オンラインで公開されている数多くの Vim スクリプト チュートリアルのいずれにも、この質問に対する答えが見つからないようです。私がやりたいのは、環境変数からスクリプトのファイル名を作成し、それをソースすることです。そして、それを Vim で実行したいのです。
シェルで実行するとしたら、次のようになります。
source ${HOME}/.vim/myscript_${FOO}.vim
Vim ではどうすればよいですか?
ベストアンサー1
文字列を構築してから、実行コマンドを使用できます。
exec "source " . $HOME . "/.vim/myscript_" . l:foo . ".vim"
(l:foo
ここでは関数内からローカル変数を使用する例を示します。)
編集:
exec
しかし、この特定のケースでは、実際にはやりすぎです。ここに表示されますOP タスクは次のように直接実行できます。
source $HOME/.vim/myscript_$FOO.vim
${...}
vimではシェルのように変数名をきちんと囲むことはできませんが、この場合HOME
、 が で終了し/
、 がFOO
で終了するのは幸運です。.
一般的に、exec
だろう変数の 1 つに非終了文字を続けたい場合には、次のようになります。
exec "source " . $BAR . "_script.vim"
は変数を挿入しますBAR
が、次の例では と呼ばれる変数を検索しますBAR_script
。
source $BAR_script.vim " Possibly not what you wanted!
安全のためにshellescape()を使用する
実行する文字列に変数を追加するときは、shellescape()
奇妙な文字 (ファイル名内のスペースなど) をエスケープするために を使用する必要があります。
たとえば、これらは上記のより安全なバージョンです。
exec "source " . shellescape($HOME . "/.vim/myscript_" . l:foo) . ".vim"
exec "source " . shellescape($BAR) . "_script.vim"