“Find next” in vim
搜索cakeVim的前锋,我/cakeD型,但光标跳到第一场比赛的时候我的出版社的回报。有一个类似Vim的命令"查找下一个"?
- 习惯使用:help。:help /显示了有关搜索的帮助,您的问题的答案显示在页面下方一点。
下一个是n,上一个是n。
如果你使用反向搜索来代替/,那么它是相反的。
如果它安装在您的系统上,您应该尝试从您的终端运行vimtutor命令,这将启动基本VIM命令的教程。
Rob Wells关于*和#的建议也很中肯。
- 另请参见index search plugin vim.org/scripts/script.php?Script PTId=1682
- 是否有方法跳转到下一个匹配项(不在当前行)?
- @用户13107:n和n处理整个缓冲区/文件。您不限于当前行。
- @ XavierT。不管怎么说,我如何在搜索中跳转固定数量的结果。我的意思是,例如跳到第10条匹配线
- @gpcyborg:n,就像大多数vim操作符一样,可以在前面加上一个数字来重复该命令。如果键入10n,它将移动到第10个结果(在初始结果之后)。它也适用于所有运动操作者,如3j沿3条直线运动。
在vim中,imho最有用的快捷方式是*键。
将光标放在一个单词上,点击*键,您将跳转到该单词的下一个实例。
键的作用相同,但会跳到单词的前一个实例。
真正节省时间。
- 如果不明显的话,只要按了*,n和n就可以通过*比赛前后移动。(或者你可以继续按*前进,或者按#后退,但是使用那些移动的键通常是次优的。)
- @赫伯特,事实上,N和N并不代表你"向前"和"向后"。正如上面提到的@xavier,n是下一个,n是上一个。向前和向后搜索的控制是通过使用"/"键和"?"来声明搜索来完成的。或使用"*"键和""键。
- 我不认为*有用吗…大多数时候我都在搜索一个单词的片段(例如,函数名的一部分)。我不想去/Func,带我去SomeFunc,然后按‘*’键,当Func的下一个实例在SomeOtherFunc的时候,去下一个SomeFunc的实例。
- 更糟糕的是,用C++我发现它不从方法调用到方法实现,因为EDCOX1 OR 14"不匹配EDCOX1,15"。
当我刚开始的时候,我需要看演示
如何在VIM中搜索
/型
键入搜索词,例如"var"
按enter
对于下一个实例,请按n(对于上一个n)
- 键入*不正确。即文件aa aaa。搜索/aa,你必须匹配。在第一次匹配时,按*更改搜索项。
- 谢谢,修好了:)
- 也可以试试g*。
- n不是"next",而是"repeat last search"。所以进入?var将从当前位置开始向上搜索"var"。"n"实际上是"在相反的方向上重复最后一次搜索",所以对于这个例子,从当前位置向下搜索"var"。
你在找n密钥吗?
键入n将转到下一个匹配项。
如前所述,有几种搜索方法:
1 2 3 4
| /pattern
?pattern
* (and g*, which I sometimes use in macros)
# (and g#) |
另外,使用n和n导航上一个/下一个。
您还可以通过使用/调出搜索提示,然后使用C-p或C-n循环来编辑/调用搜索历史记录。更有用的是q/,它将您带到一个窗口,您可以在其中导航搜索历史记录。
还需要考虑的是最重要的'hlsearch'(启用:hls型)。这使得找到模式的多个实例更加容易。你甚至可能想让你的火柴更亮一些,比如:
1
| hi Search ctermfg=yellow ctermbg=red guifg=... |
但是你可能会因为屏幕上不断的黄色匹配而疯狂。所以你经常会发现自己在使用:noh。这是很常见的,映射顺序如下:
我很容易记住这一个是z,因为我经常输入/zz,以清除我的突出显示(这是一个快速到类型罕见的事件)。但是,:noh映射要好得多。
- 如果你觉得受到q/的启发,你也应该和q:一起玩。两者都非常方便!(不过,与这个问题没有真正的联系。)
- 谢谢,迈卡。我已经知道"Q",虽然我用的不多。但是"Q/"在我的VIM教育中被完全忽略了,我认为它会有很多用处。
如果您按了ctrl+enter后再按"/wordforsearch",则可以在当前行中找到单词"wordforsearch"。然后按n进行下一个匹配;按n进行周边匹配。
- "执行搜索时,VIM从当前光标位置向前扫描,在找到的第一个匹配处停止。"正如Vim指出的那样。