Vim转到多个文件的下一个搜索结果?

时间:2015-01-28 05:11:19

标签: vim vi

当我之前使用源洞察时,当我搜索某些单词时,我可以按下"向前搜索"按钮跳转到所有项目文件中的下一个匹配

例如:

  1. 搜索" apple"
  2. Source Insight列出所有项目包含" apple"字(例如:15结果)
  3. 按"向前搜索按钮"
  4. 光标跳转到下一个搜索结果,根据需要重复以查看所有15个结果
  5. 但是使用带有cscope的vim,我需要这样的东西:

    1. :cs找到s" apple"
    2. cscope list 15结果
    3. 输入" 1"并跳转到第一个结果
    4. :cs找到s" apple"
    5. cscope list 15结果
    6. 输入" 2"并跳转到第二个结果
    7. 这非常复杂。

      在Vim中有更好的方法吗?

3 个答案:

答案 0 :(得分:8)

Vim允许您使用'cscopequickfix'选项将cscope的输出重定向到quickfix窗口。以下是:help 'cscopequickfix'中的建议值:

set cscopequickfix=s-,c-,d-,i-,t-,e-

从那里,您可以搜索apple

:cs f s apple

查看匹配列表:

:cw[indow]

跳转到下一场比赛:

:cn[ext]

跳转到上一场比赛:

:cp[revious]

当然,使用鼠标或键盘在quickfix窗口中选择条目。

奖励:将其添加到vimrc以跳过:cwindow步骤:

augroup qf
    autocmd!
    autocmd QuickFixCmdPost * cwindow
augroup END

答案 1 :(得分:1)

在Vim中,您可以使用:vimgrep :copen:cnext

  1. 在" apple"

    中搜索基础目录

    :vim apple **

  2. 显示所有15个结果:

    :cope

  3. 跳转到n - 分机结果:

    :cn

  4. 为了更轻松地在结果之间跳转,我在my .vimrc中有以下内容:

    noremap    <F4>   :<C-U>cnext <CR>
    noremap    <S-F4> :<C-U>cprevious <CR>
    

    有关详细信息,请参阅:

答案 2 :(得分:0)

在vim(命令模式)中,您可以使用/apple搜索搜索单词apple。然后使用n向前搜索,N向后搜索。

您可以设置一些设置以使其更好

:set incsearch # will jump to the search work as you type
:set hlsearch # will highlight all matches
:set ignorecase # will use case insensitive searches
:set smartcase # will use case sensitive search if the search word contains capitals

编辑:

@johnsyweb的正确答案是使用vimgrep