我可以在正常模式下查看按键的历史记录吗?


32

我知道Vim保留历史记录,包括以前的命令,搜索,跳转位置,更改以及其他可能的信息。

使用showcmdset时,Vim还会显示您到目前为止为普通模式命令输入的键,直到执行该命令为止。

有时,在正常模式下,我输入错误并且发生了动作。我可以撤消这些操作,但是有时我想知道我的失误期间如何进行编辑。有时编辑看起来很酷,我想知道将来如何重复。

那么,有什么方法可以查看正常模式下的按键历史,最好是在发生实际的编辑或动作(例如运动或模式更改)时进行划界?


Answers:


20

通过@WChargin的链接,我发现了这一点:

您可以使用-w-W选项启动vim,如下所示:

vim -w keys.txt my_file

您键入的所有字符都记录在文件{scriptout}中,直到退出Vim。

-w如果存在,将追加到指定文件;-W将覆盖它。

它并不能完全满足您的需求,但这是正确的方向。

更新:它看起来像vim实际上缓存所有按键,直到退出vim的,但有一个在线补丁这里,将立即写按键。


谢谢!我以此为起点插入源代码。看起来-w保存了每个按键,而不仅仅是正常模式的命令,但是您是正确的:这是正确的方向!
John O'M。

@xthrd,这些keys.txt文件的格式/结构如何?当我使用时-w,附加总是在长-长-长-长的行中发生。并且,显示了一些奇怪的字符:在UTF-8下,每当我在新缓冲区中打开文件时,我都会得到€齛。它本身就是一个很好的标记,但是如果可以选择对日志进行解析,那将是很好的选择。
llinfeng

@llinfeng完全没有格式化。实际上,这只是一个包含按击键顺序的文件。(尽管请注意,如果某些按键是<cr>,则该文件将包含换行符。)这是因为主要目的是创建可以使用该-s选项播放的文件。但是,为什么不亲自尝试一下呢!
Rich

@Rich谢谢您的澄清。我已经使用这种密钥跟踪机制来调试开始搜索的问题。[我的课是:从不映射W命令行。]
llinfeng

-4

q:这显示了命令历史记录。

我还发现您可以按部分完成的命令来循环进行比赛,这很有用。例如, /abc 然后按将会循环浏览以'abc'开头的搜索历史记录


5
q:显示ex命令的历史记录,并且很有用,但不是正常命令的日志,例如“ ad2tn(删除寄存器a直到第二个n)
John O'M。15

不要忘记,在编辑命令的同时,您可以在历史记录编辑器中调出当前行,并通过按Ctrl+f
Sukima
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.