0

我正在尝试在 Windows 上的 GVim 中的所有文件中复制 Notepad++ 查找。我找到了以下 vimgrep 脚本,它似乎在目录中找到了光标下的单词

map <F4> :execute "vimgrep /" . expand("<cword>") . "/j /**/*.c " <Bar> cw<CR>

我将其修改为始终在项目的根目录中搜索。但它不起作用。该项目位于“c:\lion”下

map < F4> :execute "vimgrep /" . expand("<cword>") . "/j {c:\lion\}/**/*.c " <Bar> cw<CR>

显示以下错误。

"{c:" Illegal file name
Cannot open file "{c:"
4

1 回答 1

3

删除{...}, 并按原样插入路径,就像在命令行上一样(映射只不过是记录的宏)。使用正斜杠更容易;这些也适用于 Windows。

:map <F4> :execute "vimgrep /" . expand("<cword>") . "/j C:/lion/**/*.c " <Bar> cw<CR>

也许你已经被:execute. 还有另一种方法(使用c_CTRL-R_CTRL-W)插入当前单词,可以避免这种情况:

:map <F4> :vimgrep /<C-r><C-w>/j C:/lion/**/*.c <Bar> cw<CR>

此外,您应该使用:noremap; 它使映射不受重新映射和递归的影响。

于 2014-03-19T14:05:12.073 回答