我想定义一个自定义命令来执行以下步骤:grep当前单词,copen,增量搜索grep'ed单词。下面是我使用的命令:
nmap <C-p> :execute "grep! -Irn " . shellescape(expand("<cword>")) . " ."<cr>:copen<cr>:g/<cword>/<cr>
但是打开快速修复窗口后,第二个单词被展开为当前单词。我如何使用之前grep使用的单词?
就像你把<cword>
变成grep
一样:
nmap <C-p> :execute "grep! -Irn " . shellescape(expand("<cword>")) . " .<cr>:copen<cr>:g/" . expand("<cword>"). "/<cr>"<cr>
一些想法:
- 设置搜索寄存器,不设置
:g
。例::let @/ = "foo"
- 使用
nnoremap
- 使用
escape()
使其更具弹性。参见:h escape(
- 也许用
:vimgrep
。参见:h :vimg
- 这是一个类似的问题解决了以下插件:visual star, Ack。vim和Ag.vim