如何让 vimgrep 进行单词匹配搜索?

Mor*_*eng 4 vim vimgrep

我在 _vimrc 文件中有以下语句来映射 F3 以对当前光标下的单词执行 vimgrep 。

map <F3> :execute "noautocmd vimgrep /" . expand("<cword>") . "/gj **/*." .  expand("%:e") <Bar> cw<CR>
Run Code Online (Sandbox Code Playgroud)

现在,我想让 vimgrep 来精确匹配当前光标下的单词。我将其更改如下,但它不起作用。

map <leader>s :execute "noautocmd vimgrep /\<" . expand("<cword>") . "\>/gj **/*." .  expand("%:e") <Bar> cw<CR>
Run Code Online (Sandbox Code Playgroud)

有什么问题吗?我怎样才能实现精确的单词匹配?

Dav*_*rby 5

问题是您需要将反斜杠加倍 - 单个反斜杠将转义下一个字符,如果该字符没有特殊含义,则删除反斜杠。例如

echo "\<"
Run Code Online (Sandbox Code Playgroud)

将打印

<
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常:

map <leader>s :execute "noautocmd vimgrep /\\<" . expand("<cword>") . "\\>/gj **/*." .  expand("%:e") <Bar> cw<CR>
Run Code Online (Sandbox Code Playgroud)