我尝试使用vim的:exe
命令来vimgrep
光标下的单词,但是我在命令构造方面遇到了问题:
如果我的命令是
:execute "vimgrep " shellescape(expand("<cword>")) " somedir"
它扩展到
execute "vimgrep 'foo' somedir"
但如果我的命令是
execute "vimgrep " .. shellescape(expand("<cword>")) .. " somedir"
它扩展到
execute "vimgrep '' somedir"
如何正确地展开<cword>
raw,而不使用单引号?
1条答案
按热度按时间vlf7wbxs1#
shellescape()
的主要用途是用单引号括住内容。如果您不需要这些引号,就不要使用shellescape()
。:help shellescape()
用于在命令被shell输出之前对其进行准备。由于:help vimgrep
是一个内部工具,不会向shell发送任何内容,因此无需使用引号。这意味着以下命令应满足您的大部分需求:
此外,
:vimgrep
在 files 中搜索,而不是在目录中搜索。您的命令应该看起来更像: