Vim:重复以前的动作?

时间:2014-10-24 17:34:03

标签: vim

假设我处于可视模式,我输入“aw”来扩展视觉区域以包含下一个单词。我想接下来的几个词。是否有一个键可以按重复上一个动作(包括文本对象动作)?

我知道'。'重复之前的更改,并且'n'重复之前的搜索,以及其他'repeat'命令,但我不知道任何重复前一个动作的命令(无论它是什么)。

4 个答案:

答案 0 :(得分:23)

有一个命令重复用f,t,F或T做的每个动作 (记住fx接下来出现的字符x, Fx采用x的前一次发生, tx将您带到下一次出现x之前的角色, 和Tx带你到前一次出现x)后的角色 按重复这些动议

;

向后重复(在对开方向)按

,

答案 1 :(得分:21)

有一些插件可以提供此功能:

答案 2 :(得分:3)

有一个插件可以通过+扩展区域并缩小_https://github.com/terryma/vim-expand-region

,而不是重复动作。

答案 3 :(得分:0)

没有插件使用;.

这是一个详细的示例:

int function1(){
   some code here;
   ...
   ...
   return 0;
}

int function2(){
   some code here;
   ...
   ...
   return 0;
}

现在,假设您要为功能1和功能2重写{}中的部分。

  • 将光标置于{}
  • 从普通模式(ESCctrl+c)中,按di}(代表“删除”“内部”“ {”)
  • 现在您已经删除了函数中的所有内容
  • 现在将光标移至function2的{}
  • ;.

对于可视模式,我认为宏是您唯一的选择(对于aw来说可能过大了)

  • 要开始录制宏,请按q + q(最后一个q可以是任何字母。将在其中保存宏)
  • ...做您想重复的动作...
  • 再次按q停止录制

要重播这些操作(即使在可视模式下):

  • @q(或您保存到的任何字母)

要将动作重播99次:

  • 99@q(或您保存到的任何字母)