2013-07-31 105 views
10

我真的很喜欢YankRing的行为,它可以让我访问我最后几件事情y anked或d eleted或c绞死而没有想到。Vim重复点(“。”)命令缓冲区?

但是像这样的互补特征为.重复命令完全丢失,最常见的,当我输入的时候我真的不想重复,然后按x清理东西了意外覆盖该编辑。

通常可以通过视觉模式取回我刚输入的内容,但这并不理想。

应该很容易记住过去的几个命令。

现在的问题是,从Vim中提取最后一个指令包含在.之前的最后一个指令代表的可能性有多大?

如果它是我所害怕的,唯一的办法是让一个插件绑定到每一个可以编辑某些东西的命令,并以存储我们自己的重复缓冲区的方式进行测试。这实际上并不实际,因为我已经可以想象会有多少其他插件会中断。但是,如果可能的话,我仍然真的很想要这个功能。

+0

相关问题[更强大的点(重复)版本](http://stackoverflow.com/q/16722566)。 – glts

+0

@glts我写道...它是相似的,但需要通过开始记录准备 –

+0

只要学会使用[寄存器](http://stackoverflow.com/questions/1497958/how-to-use-vim-registers? rq = 1)和其他内置的vim功能imo。很多插件可以“修复”那些不需要修复的东西。点运算符与寄存器完美配合。例如,你可以''qp'来粘贴'q'寄存器并用'.'来重复,但是任何编辑如'x'都不会改变你在非默认寄存器中保存的内容。 另一个伟大的帖子阅读[这里](http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim?rq=1) –

回答

1

插入模式中的关键字完成和/或ctrl-a应该可以满足您的需求。

应该可以采取更加类似yankring的解决方案,但正如您所说,可能有点过于侵入性。在请求其他人为你做之前,你是否亲自看过vim.org?

+0

是的,我的意思是Vim甚至没有提供找出'''会做什么的方法。我真的希望有人有一个源补丁来使用命令暴露它。 –

+0

。重复你最后的改变。这很简单,真的。 dot命令并不是真的被设计用来执行很久以前的一系列命令,所以实际上,你不必猜测它会做什么。如果您想要更长期的解决方案,请使用宏和映射。 – romainl

2

不幸的是,在.命令后面无法获取和重放命令。唯一的解决方法是永久在宏记录模式,并使用宏寄存器作为.命令的替代品。

这种策略是由RepeatLast plugin雇用的,这可能会提供你想要的。