0

如果我这样做:

:vimgrep /do_action\([ ]?'init'/ **/*.php

我明白了

E54: Unmatched \(

但我知道有些文件具有匹配的文本。为什么?

如果有人可以帮助我为 cmd+l 创建一个键映射,我也将非常感激,以便以“init”启动此搜索,用光标下的单词替换,我从各种来源了解到这是可能的。

4

2 回答 2

2

基于kev的答案,这是您的映射:

nnoremap <D-i> :vimgrep //do_action([ ]\?'<c-r>=expand('<cword>')<cr>'/ **/*.php<cr>

但我建议你不要在映射中使用 Command 键:它只在 MacVim 中有效,并且尽可能地寻求可移植性是一个好习惯。

<leader>钥匙非常适合此类事情。

nnoremap <leader>i :vimgrep //do_action([ ]\?'<c-r>=expand('<cword>')<cr>'/ **/*.php<cr>

:help c_ctrl-r_=:help leader

编辑

我在这个上走得太快了。我不仅在 kev 对您的命令的修改中添加了不必要的麻烦(愚蠢//),而且我没有注意到它可以被简化。这个是经过测试和工作的:

nnoremap <leader>i :vim do_action(\s*'<c-r>=expand('<cword>')<cr> **/*.php<cr>

对不起,混乱。

于 2012-10-17T05:46:21.883 回答
2

你不需要逃跑(来匹配它。但是您需要转义?以匹配 0~1 上一个项目。尝试:

:vimgrep /do_action([ ]\?'init'/ **/*.php
于 2012-10-17T01:43:08.870 回答