如何在vim中显示搜索的所有结果

如何在vim中显示搜索的所有结果,vim,Vim,使用记事本++搜索字符串时,新窗口将打开并显示“查找” 结果。我想在vim中使用此功能。在谷歌搜索之后,我发现了一些建议: vimgrep /<pattern>/ % copen vimgrep/% 科本 可以创建执行这两个命令的映射。Pattern应该是当前单词:may是vim中的cword关键字?我建议使用lvimgrep(因此您可以使用quickfix for:make) 等等 :全局更有用: :g/foo/ join " join all lines con

使用记事本++搜索字符串时,新窗口将打开并显示“查找” 结果。我想在vim中使用此功能。在谷歌搜索之后,我发现了一些建议:

vimgrep /<pattern>/ %
copen
vimgrep/%
科本
可以创建执行这两个命令的映射。Pattern应该是当前单词:may是vim中的cword关键字?

我建议使用lvimgrep(因此您可以使用quickfix for:make)

等等

:全局更有用:

 :g/foo/ join       " join all lines containing foo

等等。

这个要求其实很简单。但要获得用户输入的模式,您需要一个函数

function! FindAll()
    call inputsave()
    let p = input('Enter pattern:')
    call inputrestore()
    execute 'vimgrep "'.p.'" % |copen'
endfunction
如果要进行映射,请添加以下行:

nnoremap <F8> :call FindAll()<cr>
nnoremap:callfindall()

但正如我在你的问题下评论的那样<代码>%对于未指定的缓冲区可能不起作用

这两个命令可以缩短并链接:
:vim foo%|co
。您可以像这样将单词拉到光标下面:
:vim%|co

下面是一个快速正常模式映射,可用于在“快速修复”窗口中列出光标下出现的所有单词:

nnoremap <F6> :vimgrep /<C-r><C-w>/j % <bar> cwindow<cr>
nnoremap:vimgrep//j%cwindow

您还可以使用
:il[ist]foo
显示所有出现的
foo
的列表,或使用
[I
为光标下的单词显示相同的列表


当列表显示时,使用
:{line number}
跳转到相应的行。

谢谢帮助。我尝试了,但它给出了错误消息:在处理/home/student/时检测到错误。vimrc:line 30:E488:尾随字符:lopenI使用
:number
(或简称
:nu
)再加上
:g
,这就相当不错了。@PeterRincker我选择的武器会更短:
:g//#
@这是一个很好的提示。我忘了
:#
。谢谢你注意,如果你使用
vimgrep…%
,它可能无法在未经修改的缓冲区上工作。非常感谢。我可以用鼠标浏览搜索结果吗?也就是浏览点击|.@VardanHovhannisyan搜索结果以进行鼠标操作..我不确定,当我与vim在一起时,我很少使用鼠标。但我可以在有时间的时候为您检查。对于光标下的单词。在命令行中按
将给出该结果..事实上,他在回答中有这个。@VardanHovhannisyan双击entr快速修复窗口中的y将跳转到这一行。我的
中有
set mouse=a
。vimrc
function! FindAll()
    call inputsave()
    let p = input('Enter pattern:')
    call inputrestore()
    execute 'vimgrep "'.p.'" % |copen'
endfunction
nnoremap <F8> :call FindAll()<cr>
nnoremap <F6> :vimgrep /<C-r><C-w>/j % <bar> cwindow<cr>