假设我有这个 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), "%"))
但这真的是最好的方法吗?我敢肯定还有更多我应该逃脱的角色。为此目的是否有特定的转义功能?还是更好的出击方式?