【问题标题】:"Find next" in VimVim 中的“查找下一个”
【发布时间】:2011-09-30 06:15:21
【问题描述】:

要在 Vim 中向前搜索 cake,我会输入 /cake,但是当我按下回车键时,光标会跳转到第一个匹配项。 是否有类似于“查找下一个”的 Vim 命令?

【问题讨论】:

  • 习惯使用:help:help / 显示有关搜索的帮助,您的问题的答案显示在页面下方一点点处。

标签: vim editing


【解决方案1】:

下一个是n,上一个是N

如果您使用带有?(例如?cake)而不是/ 的反向搜索,则相反。

如果你的系统上安装了它,你应该尝试从你的终端运行vimtutor 命令,这将开始一个基本的 Vim 命令教程。

Rob Wells advice关于*#也很中肯。

【讨论】:

  • @XavierT。任何想法,我如何在搜索中跳转固定数量的结果。我的意思是例如跳转到第 10 个匹配行
  • @GPcyborg : n 像大多数 vim 操作符一样可以用数字前缀来重复命令。如果您输入10n,它将移至第 10 个结果(在第一个结果之后)。它也适用于像3j 这样的所有运动运算符,以向下 3 行。
【解决方案2】:

键入 n 将进入下一场比赛。

【讨论】:

    【解决方案3】:

    您可能正在寻找 n 键。

    【讨论】:

      【解决方案4】:

      恕我直言,Vim 中最有用的快捷键是 * 键。

      将光标放在一个单词上并按下 * 键,您将跳转到该单词的下一个实例。

      # 键的作用相同,但它会跳转到单词的上一个实例。

      这确实是一个节省时间。

      【讨论】:

      • 如果不是很明显,nN 会在您按下 * 后引导您在 * 匹配中前进和后退。 (或者你可以一直按* 前进或# 后退,但使用这些移位键通常不是最佳选择。)
      • @Herbert,实际上 n 和 N 不会分别带您“前进”和“后退”。正如上面提到的@Xavier,n 是 next 而 N 是 previous。通过使用“/”键和“?”声明搜索来控制向前和向后搜索。键或使用“*”键和“#”键。
      • 我不认为 * 有那么有用...大多数时候我正在搜索单词的片段(例如,函数名称的一部分)。我不想/Func,让它带我到SomeFunc,然后当Func 的下一个实例在SomeOtherFunc 中时按'*' 转到SomeFunc 的下一个实例。跨度>
      • 更糟糕的是,使用 C++ 我发现它不会从方法调用到方法实现,因为 /\<foo\> 不匹配 "className::foo()"
      【解决方案5】:

      刚开始时,我需要watch a demo

      如何在 Vim 中搜索

      1. 类型 /
      2. 输入搜索词 例如“变量”
      3. 按下 回车
      4. 对于下一个实例按n(对于上一个 N

      【讨论】:

      • 输入 * 不正确。 IE。一个文件aa aaa。搜索/aa,你必须匹配。在第一次匹配时,按 * 会更改搜索词。
      • n 不是“下一个”而是“重复上一次搜索”。因此输入 ?var 将开始从您当前的位置向上搜索“var”。而“N”实际上是“在相反方向重复最后一次搜索”,因此对于这个示例,它将从当前位置向下搜索“var”。
      【解决方案6】:

      如前所述,有几种搜索方式:

      /pattern
      ?pattern
      * (and g*, which I sometimes use in macros)
      # (and g#)
      

      另外,使用 Nn 导航上一个/下一个。

      您还可以通过使用/ 拉起搜索提示然后使用C-p/C-n 循环来编辑/调用您的搜索历史记录。更有用的是q/,它会将您带到一个窗口,您可以在其中浏览搜索历史记录。

      还需要考虑最重要的'hlsearch'(键入:hls 以启用)。这使得查找模式的多个实例变得更加容易。您甚至可能希望通过以下方式使您的匹配更加明亮:

      hi Search ctermfg=yellow ctermbg=red guifg=...
      

      但是你可能会因为屏幕上不断出现黄色匹配而发疯。所以你会发现自己经常使用:noh。这很常见,以至于映射是有序的:

      nmap <leader>z :noh<CR>
      

      我很容易记住这是z,因为我以前经常输入/zz&lt;CR&gt;(这是一种快速输入的不常见情况)来清除我的突出显示。但是:noh 映射要好得多。

      【讨论】:

      • 如果您受到q/ 的启发,您也应该使用q:。两者都非常好用! (不过,与这个问题并不真正相关。)
      • 谢谢,米卡。我已经知道 'q:',虽然我用的不多。但是 'q/' 在我的 vim 教育中完全被忽略了,我认为会得到很多用处。
      【解决方案7】:

      如果在按“/wordforsearch”之类的内容后按Ctrl + Enter,则可以在当前行中找到单词“wordforsearch”。然后按 n 进行下一场比赛;按 N 查看上一场比赛。

      【讨论】:

      • “当我们执行搜索时,Vim 从当前光标位置向前扫描,在它找到的第一个匹配处停止。”正如实用 Vim 指出的那样。
      猜你喜欢
      • 1970-01-01
      • 2012-05-07
      • 2011-05-23
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      相关资源
      最近更新 更多