在文件中找到第一个匹配项的快捷方式

时间:2015-05-30 13:01:50

标签: regex vim

使用" /"进行搜索时在vim中我发现自己经常想要去文件的第一场比赛。

我知道我可以做到:

gg/<pattern>

但&#34; gg&#34;在我的跳转列表中添加一个我可能不想要的条目。

我觉得模式中应该有一种方法可以跳转到文件的第一个匹配项。

类似的东西:

/<pattern>/<argument to specify first in file>

此功能是否存在,或者是否有人可以提供映射?

5 个答案:

答案 0 :(得分:4)

为了避免添加到跳转列表,可以使用:keepjumps命令,但是你会得到一个长命令,因为这现在通过Ex命令,你需要:execute总结<Enter>

:execute "keepjumps normal! gg/<pattern>/\<CR>"

另一种方法是使用:range; 0(转到顶部)和/.../(搜索)的组合与;结合使用匹配进入第一个

:0;/<pattern>/

如果您需要将光标定位在确切的第一个匹配项上(并且它不在行的开头),则需要额外的n

:0;/<pattern>/normal! n

答案 1 :(得分:2)

/?从当前光标位置开始搜索,你无能为力。

作为替代方案,您可以使用:

:g/foo/#

或:

:il[ist] /foo
无论如何,

搜索/要好得多。

答案 2 :(得分:1)

如果您因为要查找变量声明而问这个,那么请知道vim为此提供了gD正常命令。

了解更多信息:

:help gd
:help gD

答案 3 :(得分:0)

扩展Ingo的答案我把它放在我的.vimrc中:

function! GotoFirstMatch()
    call inputsave()
    let userInput = input('')
    execute "keepjumps normal! gg/".userInput."/\<CR>"
endfunction
nnoremap <leader>/f :call GotoFirstMatch()<CR>

我对vimscript还是比较新的...会感激任何反馈...

编辑:

我也开始使用这个快捷方式了:

[<C-i>

这就像使用“*”命令但让它转到文件的第一个匹配而不是光标之后的下一个匹配

答案 4 :(得分:-1)

您可以将/映射到gg/

:nnoremap / gg/