VIM找到下一个匹配线?

时间:2013-09-23 22:36:05

标签: vim match shortcut

在VI中,如何跳转到整个当前行的下一个(如果有的话)?

喜欢*用于单词,但是对于整个当前行而不仅仅是当前单词。

4 个答案:

答案 0 :(得分:1)

我不确定这是否可以接受。 您可以将光标留在要搜索的那一行上,然后按:

/<c-r>=getline('.')<cr>

Y/<c-r>"<BS><cr>

:let @/=getline('.')<cr>

这个想法是一样的,将该行复制到/搜索。但是,这将适用于所有情况,例如你的行包含“正则表达式”:

aaa.*foo (cursor here)
aaabbfoo
aaa.*foo

vim将匹配所有三行。

注意您可能希望使用^$包装行文字以获得更好的结果。

答案 1 :(得分:1)

没有预定义的命令,但你可以这样做:

:map <F7> 0v$hy/\V<C-R>"<CR>

命令的第一部分将整行复制到默认寄存器中,第二部分执行搜索。 然后,只需在正常模式下按F7,这就是所有人。

我喜欢的另一个人:

:map µ yiw:vim /<bslash><lt><C-R>"<bslash>>/ *<CR>

它扩展了使用'*'对当前目录中的所有文件进行的搜索。

答案 2 :(得分:0)

肯特答案的略微修改版本应始终有效,不会被特殊符号混淆。 (即刺痛与字面匹配,没有任何解释为正则表达式)

/\V\^<c-r>=escape(getline('.'), '\')<cr>\$

\V打开非常无意义意味着唯一的特殊字符是反斜杠。我们使用escape函数来逃避所有反斜杠(感谢Ingo Karkat)

或在地图中

:nnoremap <silent> ,* /\V\^<c-r>=escape(getline('.'), '\')<cr>\$<cr>

答案 3 :(得分:0)

有几个插件可以扩展*命令以在可视模式下进行选择;其中一个是我的SearchHighlighting plugin。 (插件页面包含指向其他插件的链接。)

这样,搜索当前行是一个快速V*(转到线性可视模式,搜索选择)。