Vim: 文字列に基づくソース 質問する

Vim: 文字列に基づくソース 質問する

オンラインで公開されている数多くの 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"

おすすめ記事