vimが%をファイル名に置き換えることを防ぐ

vimが%をファイル名に置き換えることを防ぐ

私は.vimrcで遊んでいますが、次のアイデアがありました。次の機能があります。

function Fill_line ()
       execute "! printf '=%.0s' {1..10}"
endfunction

私の結果は次のとおりです

Hello =test.cpp.0s

私はそれになりたいです:

==========

私もこれを試しました:

function Fill_line ()
       execute "! printf '=\%.0s' {1..10}"
endfunction

%私の質問は、文字をファイル名に置き換えないように文字をエスケープする方法です。これは、他の複雑な機能を単純化した例であることに注意してください。

ベストアンサー1

2つのバックスラッシュを使用するか、単一引用符を使用する必要があります。

execute "! printf '=\\%.0s' {1..10}"

execute '! printf "=\%.0s" {1..10}'

二重引用符で囲まれた文字列()を解析するとき、vimが知っているエスケープ文字(または)を"..."開始しないすべてのバックスラッシュを削除するため、コマンドに渡された文字列は最終的になり、次のようになるため、これが必要です。現在のファイル名に置き換えられます。\n\x0aexecute! printf '=%.0s' {1..10}%

おすすめ記事