使用记事本++搜索字符串时,将打开新窗口并显示查找 结果。我想在vim中使用这个功能。谷歌搜索后,我发现了一些建议:如何在vim中显示搜索的所有结果
vimgrep /<pattern>/ %
copen
这是可能的创建映射,执行这两个命令。模式应该是当前的词语:可能是vim中的cword关键字?
使用记事本++搜索字符串时,将打开新窗口并显示查找 结果。我想在vim中使用这个功能。谷歌搜索后,我发现了一些建议:如何在vim中显示搜索的所有结果
vimgrep /<pattern>/ %
copen
这是可能的创建映射,执行这两个命令。模式应该是当前的词语:可能是vim中的cword关键字?
要求实际上是很容易。但要获得用户输入模式,您需要一个功能。
function! FindAll()
call inputsave()
let p = input('Enter pattern:')
call inputrestore()
execute 'vimgrep "'.p.'" % |copen'
endfunction
,如果你想有一个映射,加入这一行:
nnoremap <F8> :call FindAll()<cr>
但我你的问题下评论。 %
可能不适用于未知的缓冲区。
我建议lvimgrep(这样你就可以使用的quickfix:让)
:nnoremap <F6> :lvimgrep /\M\<<C-R><C-W>\m\>/ **/*.[ch]pp **/Makefile | lopen<CR>
此外,如果你只是想在当前文件中找到:
:g/<pattern>/
将调用“打印'(默认命令)在每个匹配行上。
:v// " non-matching lines
:g//-1 " lines preceding the matching line
:g//-1,+1 " lines around the matching line
等
:全球是更为有用:
:g/foo/ join " join all lines containing foo
等
感谢您的帮助。我尝试了,但它给出了错误信息: 处理/home/student/.vimrc时发现错误: line 30: E488:尾随字符:lopen
我使用':number'(或':nu'简称)与':g'相结合,相当不错。 – 2013-04-09 16:41:29
@PeterRincker我选择的武器会更短:':g //#' – sehe 2013-04-09 17:48:50
这两个命令可以缩短和链接::vim foo %|co
。你可以像这样在光标下面拉字::vim <C-r><C-w> %|co
。
这里是一个快速正常模式映射,您可以使用列出的单词的所有出现在quickfix窗口的光标下:
nnoremap <F6> :vimgrep /<C-r><C-w>/j % <bar> cwindow<cr>
您还可以使用:il[ist] foo
显示列表在foo
或[I
的所有匹配项中,为您的光标下的单词显示相同的列表。
当列表显示时,使用:{line number}
跳转到相应的行。
请注意,如果您执行'vimgrep ...%',它可能无法在unamed缓冲区上工作。 – Kent 2013-04-09 15:40:42