2017-08-17 62 views
0

我现在使用vim的时间已经很长一段时间了,但是我每天都会多次遇到不便,因为太早打ESC撤消vim中的ESC键击

假设我编辑以下文件:

I want to change 'house' in this line. 
'house' should stay like this. 
This 'house' should become 'home' 
The other 'house' should also change. 

我想改变的所有线househome除了第二个。 (在这个简单的例子中,编写:s命令并执行任务很容易,但通常任务更具体,手动替换更快,更不易出错)。我导航到house的第一个匹配项,按cw,输入hone ,并击中ESC。打到ESC后,我意识到偶然我输入了字母n而不是m

  1. 我可以浏览到的house下一个出现的,打.重复故障更换。在这种情况下,我必须修复所有hone s,然后用m代替n

  2. 我可以立即修复的错误,但我不能重复同样的house - >home更换,因为.将重复n - >m更换。

所有这一切都将是没有问题的,如果我打ESC之前发现的错误。我的问题是,如果有办法撤消离开插入模式,这样.将重复这两个操作?或者类似地,有没有办法告诉.重复上次操作?

(当然,这听起来像录制宏,但因为我在这种情况下错误地结束了,我还没有开始录制宏)

+0

您可以估计这种情况的概率。如果你改变这个词100次,你会犯多少次错误。如果它是> 15-20倍,你应该真正练习你的打字技巧。 Vim不知道后者的操作是更正还是新操作。如果你知道这是一个“错误”,而且你知道你会按'.'来重复修改,为什么不在按'esc'之前进行重复检查? – Kent

回答

1

就我本人而言,有没有命令历史记录因为你可以重复最后两个操作。

但是,有一个插件可以帮助您实现该目标。它被称为the RepeatLast.vim plugin来解决这个确切的要求。它提供了一个2\.密钥绑定。使用该插件的成本以及该插件的实际工作方式是......它实际上允许宏记录始终。但如果你能忍受这一点,它应该很好地处理这种情况。