【问题标题】:Vim Repeat dot (".") command buffer?Vim 重复点(“。”)命令缓冲区?
【发布时间】:2013-07-31 01:29:39
【问题描述】:

我真的很喜欢 YankRing 的行为,它让我可以不假思索地访问 yanked 或 deleted 或 changed 的​​最后几件事。

但是,. 重复命令完全缺少这样的补充功能,最常见的是当我键入我真正想重复的内容,然后按 x 清理某些内容时意外覆盖了该编辑。

通常可以通过视觉模式拉动我刚刚输入的内容来恢复一段时间,但这并不理想。

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

问题是如何从 Vim 中提取包含在任何存储中的最后一个命令的表示,. 在它被吹走之前会做什么?

如果真的像我担心的那样,唯一的方法是让插件绑定到每个可以编辑内容的命令,并以存储我们自己的重复缓冲区的方式对其进行检测。这真的不切实际,因为我已经可以想象有多少其他插件会损坏。但是,如果可以的话,我仍然非常想要这个功能。

【问题讨论】:

  • @glts 我写的……很相似,但需要通过开始录制来准备
  • 只要学会使用registers 和其他内置的vim 功能。如此多的插件可以“修复”不需要修复的东西。点运算符与寄存器完美配合。例如,您可以"qp 粘贴q 寄存器并使用. 重复,但任何编辑如x 不会更改您保存在任何非默认寄存器中的内容。另一个值得阅读的好帖子here
  • 另外,使用"_“黑洞寄存器”删除时不保存任何内容。

标签: vim


【解决方案1】:

很遗憾,无法获取和重播. 命令后面的命令。唯一的解决方法是永久处于宏录制模式,并使用宏寄存器代替. 命令。

RepeatLast plugin 采用了这种策略,它可能会提供你想要的。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,我的意思是 Vim 甚至无法提供一种方法来确定 . 会做什么。我真的希望有人有一个源补丁来用命令公开它。
    • 。重复上一次更改。这很简单,真的。 dot 命令并不是真正设计用于执行很久以前的一系列命令,因此,实际上,您永远不必猜测它会做什么。如果您想要更长期的解决方案,请使用宏和映射。
    猜你喜欢
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多