【问题标题】:How do you search through Vim's command history?你如何搜索 Vim 的命令历史?
【发布时间】:2010-10-19 00:29:24
【问题描述】:

我也想在 Vim 中进行以下搜索

(reverse-i-search)`':

输入你之前命令的一个词,你会得到完整的命令。

我知道 Vim 中的年代历史工具

q:

但是,它没有模糊反向搜索那么有用。

如何在 Vim 中进行与终端中类似的反向搜索?

【问题讨论】:

  • @Masi:为什么它没那么有用?您仍然可以搜索该历史记录,使其更强大
  • reverse-i-search 模仿的实现实际上相当简单,请在下面查看我的答案。

标签: search vim


【解决方案1】:

在正常模式下键入q: 以打开命令窗口。您可以使用常规 vim 命令在此处搜索/编辑。您从正常模式开始。按Enter 执行命令。

这种方法可以让您搜索整个命令,而不仅仅是行首。

【讨论】:

  • 现在我知道为什么我有时会获取命令历史记录而不是退出缓冲区或 vim 本身。
  • 有什么方法可以将它与 fzf 结合起来?
  • @jchook 有一个 vim-fzf 插件,它具有 :History: 命令,可让您在命令历史记录中进行模糊搜索。恐怕在执行之前无法修改它们。
  • @sumek: fzf.vim's :History: 确实允许您在执行命令之前修改命令,使用 Ctrl + e。
  • @MatthiasBraun:太棒了!!!非常感谢! :) 以前没注意到!
【解决方案2】:

输入上一个命令的第一个字母,然后按 箭头(或 Ctrl+p)。

:set li<up>
:set lines=75

不要忘记检查历史选项并将其设置为足够大的值

:set history=1000

【讨论】:

  • 如果您在 Mac 上有 Visor,请尝试使用 :set lines=48 代替。出于某种原因,75 行的窗口太大了。
  • 75 仅用于示例目的,但感谢 Visor。虽然我从来不需要一个,但我不知道这个。但我喜欢它!
  • 我使用的不是终端 Vim,而是 MacVim。
  • 谢谢。这比默认的历史记录大小要好得多,我发现它是 20。难怪我的历史记录这么短,我不得不重新输入所有内容。
  • @Deiwin Ctrl+p (& Ctrl+n for next) 在 bash 命令行中调用最后一个命令
【解决方案3】:

在命令模式下按Ctrl+F打开命令历史窗口。然后,您可以使用/? 和其他搜索命令。按 Enter 键执行历史记录中的命令。

有关命令历史记录窗口的更多信息,请参阅:h cmdwin

【讨论】:

  • 爱它!这正是我想要的
【解决方案4】:

这是Vim's commandline history 的文档,另请参阅Vim's commandline history 上的这部分文档,其中涵盖了历史记录中的键绑定。看起来你可以说:foo,然后按向上箭头找到最后一个以 foo 开头的命令。

【讨论】:

    【解决方案5】:

    用FZF模糊搜索命令::History:

    来源:https://github.com/junegunn/fzf.vim

    【讨论】:

      【解决方案6】:

      我也在寻找这个(最后在想知道为什么它没有内置一段时间之后)并决定我无法抗拒掀起一个实现,所以你去吧:https://github.com/goldfeld/ctrlr.vim

      它应该像 shell 一样工作——好吧,仍然缺少一些基本的东西(比如再次按 ^R 跳到下一个匹配项),但我使用的只是在第一个版本中,我计划添加剩下的时间在接下来的几周内。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-06
        • 2018-12-08
        • 1970-01-01
        相关资源
        最近更新 更多