1

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

就像 * 对单词一样,但对整个当前行而不是当前单词。

4

4 回答 4

1

对此没有预定义的命令,但您可以执行以下操作:

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

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

另一个我喜欢的:

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

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

于 2013-09-23T23:00:43.397 回答
1

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

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

或者

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

或者

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

思路一样,复制行/搜索。但是,这不适用于所有情况,例如,您的行包含“正则表达式”:

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

vim 将匹配所有三行。

请注意,您可能希望将行文本换行^$获得更好的结果。

于 2013-09-23T22:43:52.697 回答
0

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

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

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

或者在映射中

:nnoremap <silent> ,* /\V\^<c-r>=escape(getline('.'), '\')<cr>\$<cr>
于 2013-09-24T04:14:56.760 回答
0

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

这样,对当前行的搜索就变得很快V*(进入逐行可视模式,搜索选择)。

于 2013-09-24T06:57:06.737 回答