您如何搜索Vim的命令历史记录?


75

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

(reverse-i-search)`':

输入上一个命令的单词,即可获得完整的命令。

我知道Vim中的时间顺序历史记录工具

q:

但是,它不如模糊反向搜索有用。

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


@Masi:为什么它没有那么有用?您仍然可以搜索该历史记录,以使其更强大
sumek 2011年

反向i搜索模仿的实现实际上很简单,请在下面查看我的答案。
维克·戈德菲尔德

Answers:


79

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

:set li<up>
:set lines=75

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

:set history=1000

如果您在Mac上有Visor,请改用:set lines = 48。由于某些原因,该窗口以75行扩大了太多。
莱奥列奥波尔德赫兹준 영

75仅作为示例用途,但感谢Visor。我从来不知道这一点,对此我一无所知。但我喜欢它!
Mykola Golubyev 09年

我不是使用终端Vim,而是使用MacVim。
Mykola Golubyev 09年

1
谢谢。这比默认的历史记录大小要好得多,我发现默认的历史记录大小为20。难怪我的历史记录如此短,我不得不重新键入所有内容。
pbarill

3
@beiwin Ctrl + p(下一个&Ctrl + n),如bash命令行中所示,以调用上一个命令
Pipo

112

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

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


33
现在我知道为什么有时我会得到命令历史记录而不是退出缓冲区或vim本身。
sargas

有什么办法与fzf结合吗?
jchook

2
@jchook有一个带有:History:命令的vim-fzf插件,可让您在命令历史记录中进行模糊搜索。恐怕没有办法在执行之前修改它们。
sumek

2
@sumek:fzf.vim:History:允许您在执行命令之前使用Ctrl + e修改命令。
Matthias Braun

@MatthiasBraun:太好了!!!非常感谢!:)之前没有注意到!
sumek


10

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

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


5

我也一直在寻找它(最终想知道为什么一段时间没有内置它了),并决定我忍不住要提一个实现,所以在这里:https : //github.com/goldfeld/ ctrlr.vim

它应该像外壳程序一样工作-仍然缺少一些基本的功能(例如再次按^ R跳到下一个匹配项),但是我使用的只是该第一个版本,我打算将其余内容添加到该版本中接下来的几周,我会抽空。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.