如何< cword>在vim中正确地展开execute命令

qacovj5a  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(122)

我尝试使用vim的:exe命令来vimgrep光标下的单词,但是我在命令构造方面遇到了问题:
如果我的命令是

:execute "vimgrep " shellescape(expand("<cword>")) " somedir"

它扩展到

execute "vimgrep 'foo' somedir"

但如果我的命令是

execute "vimgrep " .. shellescape(expand("<cword>")) .. " somedir"

它扩展到

execute "vimgrep '' somedir"

如何正确地展开<cword> raw,而不使用单引号?

vlf7wbxs

vlf7wbxs1#

shellescape()的主要用途是用单引号括住内容。如果您不需要这些引号,就不要使用shellescape()
:help shellescape()用于在命令被shell输出之前对其进行准备。由于:help vimgrep是一个内部工具,不会向shell发送任何内容,因此无需使用引号。
这意味着以下命令应满足您的大部分需求:

:execute "vimgrep " .. expand("<cword>") .. " somedir"

此外,:vimgrepfiles 中搜索,而不是在目录中搜索。您的命令应该看起来更像:

:execute "vimgrep " .. expand("<cword>") .. " somedir/*"

相关问题