【发布时间】:2011-09-30 06:15:21
【问题描述】:
要在 Vim 中向前搜索 cake,我会输入 /cake,但是当我按下回车键时,光标会跳转到第一个匹配项。 是否有类似于“查找下一个”的 Vim 命令?
【问题讨论】:
-
习惯使用
:help。:help /显示有关搜索的帮助,您的问题的答案显示在页面下方一点点处。
要在 Vim 中向前搜索 cake,我会输入 /cake,但是当我按下回车键时,光标会跳转到第一个匹配项。 是否有类似于“查找下一个”的 Vim 命令?
【问题讨论】:
:help。 :help / 显示有关搜索的帮助,您的问题的答案显示在页面下方一点点处。
下一个是n,上一个是N。
如果您使用带有?(例如?cake)而不是/ 的反向搜索,则相反。
如果你的系统上安装了它,你应该尝试从你的终端运行vimtutor 命令,这将开始一个基本的 Vim 命令教程。
Rob Wells advice关于*和#也很中肯。
【讨论】:
n 像大多数 vim 操作符一样可以用数字前缀来重复命令。如果您输入10n,它将移至第 10 个结果(在第一个结果之后)。它也适用于像3j 这样的所有运动运算符,以向下 3 行。
键入 n 将进入下一场比赛。
【讨论】:
您可能正在寻找 n 键。
【讨论】:
恕我直言,Vim 中最有用的快捷键是 * 键。
将光标放在一个单词上并按下 * 键,您将跳转到该单词的下一个实例。
# 键的作用相同,但它会跳转到单词的上一个实例。
这确实是一个节省时间。
【讨论】:
n 和 N 会在您按下 * 后引导您在 * 匹配中前进和后退。 (或者你可以一直按* 前进或# 后退,但使用这些移位键通常不是最佳选择。)
/Func,让它带我到SomeFunc,然后当Func 的下一个实例在SomeOtherFunc 中时按'*' 转到SomeFunc 的下一个实例。跨度>
/\<foo\> 不匹配 "className::foo()"
【讨论】:
* 不正确。 IE。一个文件aa aaa。搜索/aa,你必须匹配。在第一次匹配时,按 * 会更改搜索词。
如前所述,有几种搜索方式:
/pattern
?pattern
* (and g*, which I sometimes use in macros)
# (and g#)
另外,使用 N 和 n 导航上一个/下一个。
您还可以通过使用/ 拉起搜索提示然后使用C-p/C-n 循环来编辑/调用您的搜索历史记录。更有用的是q/,它会将您带到一个窗口,您可以在其中浏览搜索历史记录。
还需要考虑最重要的'hlsearch'(键入:hls 以启用)。这使得查找模式的多个实例变得更加容易。您甚至可能希望通过以下方式使您的匹配更加明亮:
hi Search ctermfg=yellow ctermbg=red guifg=...
但是你可能会因为屏幕上不断出现黄色匹配而发疯。所以你会发现自己经常使用:noh。这很常见,以至于映射是有序的:
nmap <leader>z :noh<CR>
我很容易记住这是z,因为我以前经常输入/zz<CR>(这是一种快速输入的不常见情况)来清除我的突出显示。但是:noh 映射要好得多。
【讨论】:
q/ 的启发,您也应该使用q:。两者都非常好用! (不过,与这个问题并不真正相关。)
如果在按“/wordforsearch”之类的内容后按Ctrl + Enter,则可以在当前行中找到单词“wordforsearch”。然后按 n 进行下一场比赛;按 N 查看上一场比赛。
【讨论】: