このvimscriptを「/tmp/example.vim」として持っているとしましょう。
let g:input = "START; % END"
exec("! clear && echo " . shellescape(g:input))
そのファイルを開いてで実行すると:so %
、出力は次のようになります。
START; /tmp/example.vim END
「%」がバッファ名に展開されるためです。出力を
START; % END
escape()
特にパーセント記号をエスケープするためにジェネリックメソッドを使用できます。これは機能します:
let g:input = "START; % END"
exec("! clear && echo " . escape(shellescape(g:input), "%"))
しかし、それは本当に最良の方法ですか?逃げるべきキャラクターはもっとたくさんいると思います。この目的のための特定のエスケープ機能はありますか?または、シェルアウトするためのより良い方法はありますか?