我找不到在常规Vim中执行此操作的任何方法。但是,如果您愿意修补Vim,则可以使用以下方法。
非常简单的补丁程序(适用于Vim-7.4.052)禁用了对屏幕的实际更新,该更新在正常命令结束时清除了历史记录。通过返回是否showcmd_is_clear
在更新显示之前进行设置来完成此操作。(或者,您可以注释掉if语句,只保留一行原始内容return
。注意:下面的补丁粘贴得不好;您可能必须手动应用它,尽管它只是一小段内容。注意:我不注释掉实际display_showcmd()
,因为它出现在视觉模式下使用更新选定的线或其它可能的其他东西的数目的显示我还没有广泛测试此。
--- src/normal.c 2015-02-14 00:21:23.286352257 -0500
+++ src/normal.c 2015-02-14 00:21:25.238352173 -0500
@@ -4029,6 +4029,7 @@
/* Don't actually display something if there is nothing to clear. */
if (showcmd_is_clear)
return;
+ return;
}
display_showcmd()
结果看起来像这样:
一些有趣的事情要注意:
- 这说明即使是简单的运动,如
j
,k
,b
,等。
- 该
x
命令实际上成为dl
在showcmd_buf。
- 更改底线的命令将消除showcmd区域(例如,使用
:
命令或进入插入模式(至少在我的设置中))
- 键入a后,捕获程序停止记录许多笔画
"
,但是对于长寄存器指定的yank,我的键序列在vim窗口中可见。
- 未在演员esc表
^[
中显示,但在正常模式下命中显示在showcmd区域
dt
之所以显示,是因为它是当前待处理的运算符。发出动作后,就不再需要操作员挂起。假设我们走得更远了,大概dt.gU(gu)daw
做了。是所有的“一个完整命令”,还是四个完整命令,或其他?