【问题标题】:Showing the number of matches during an incremental search在增量搜索期间显示匹配数
【发布时间】:2013-05-29 14:05:05
【问题描述】:

大多数 IDE 的文本编辑器会在您搜索某个字符串时显示“this is match 3 of 7”之类的信息。当您使用 nN 移动到匹配项时,有什么方法可以让 Vim 显示此信息?

【问题讨论】:

  • 我不认为“增量搜索”意味着你认为它的意思。
  • @romainl 是的,我想你是对的。虽然如果我在输入搜索字符串时也能看到“match 3 of 7”,那就太好了。
  • @bdesham 要使搜索既是增量的 (set incsearch) 又是显示匹配的计数,每次向搜索中添加字符时都必须计算它们。这可能被证明是非常耗费资源的,所以这可能不是一个好主意。而且,如果你使用IndexedSearch这样的插件,它就不能显示在已经被/search占用的命令行中。您必须将它与您的状态栏或其他东西集成。总而言之,我会说使用 IndexedSearch 会更容易,然后按<Enter>,因为您知道要搜索什么:-)
  • @timss 是的,这似乎是必须融入 Vim 的东西,既是因为 UI 问题,也是因为在 Vimscript 中做这样的事情要么不可能,要么太耗费资源。
  • @bdesham 似乎可以使用:%s/search//gn 来计算匹配项,如From Show Count of Matches in Vim / Peter Rinker 的帖子中所述,但它似乎不会在您每次n 时更新计数/N,所以它似乎不是一个合适的解决方案,就像你在成熟的 IDE 中可能习惯的那样。无论如何,使用 Vundle 安装上述插件是一件轻而易举的事,据我所知,它在生成匹配命中方面非常快。

标签: vim


【解决方案1】:

From Show Count of Matches in Vim:

你想要的可能是插件IndexedSearch
执行/set 时会显示计数,并在命令行中显示搜索查询:

Match 5 of 81  /set/

使用您最喜欢的插件管理器安装它。我推荐Vundle

【讨论】:

    【解决方案2】:

    最常见的方法是在替换命令中使用n 标志。

    :%s/set//gn
    

    或通过:%s//gn 使用当前模式。这为您提供了一些您要求的反馈。

    但是我更喜欢使用:vimgrep 和快速修复列表。通过以下方式搜索您的模式:

    :vimgrep/set/ %
    

    这会搜索当前文件%,并将匹配项添加到快速修复列表中。然后您可以通过:cnext:cprevious 在快速修复列表中移动。在快速修复列表中移动时,文本将显示在底部,显示类似(1 of 5) 的内容。通过使用:copen 命令,将打开一个显示快速修复结果的窗口。通过在快速修复项目上按 <cr> 移动到模式。

    使用:vimgrep 有一些缺点。

    • :vimgrep 从 vim 7.3 开始不支持使用当前模式,即不支持 :vimgrep// %。相反,必须使用<c-r>/ 拉入搜索模式寄存器并可能转义任何/
    • 对当前文件使用% 表示该文件必须存在,因此您无法搜索暂存缓冲区。
    • :cnext:cprev 和朋友们比漂亮简单的nN 更冗长。添加漂亮的映射可以克服这个问题。我使用 Tim Pope 出色的 unimpaired 插件中的 [q]q

    如需更多帮助,请参阅:

    :h :s_flags
    :h :vimg
    :h c_CTRL-R
    :h quote/
    :h quickfix
    :h c_%
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2018-09-22
      • 2018-12-12
      • 2014-08-23
      • 1970-01-01
      相关资源
      最近更新 更多