Vim 维姆:重复上一个动作?

Vim 维姆:重复上一个动作?,vim,Vim,假设我处于视觉模式,我键入“aw”扩展视觉区域以包含下一个单词。然后我想包括接下来的几个词。有没有一个按键可以让我重复上一个动作(包括文本对象动作) 我知道“.”重复先前的更改,“n”重复先前的搜索,以及其他“repeat”命令,但我不知道有任何命令重复先前的动作(无论是什么动作)。有一些插件提供此功能: :重复给定计数的动作 :使大多数动作可重复 :为vim提供重复运动操作的支持(k、j、h、l、w、b、w、b、e、e、ge、ge) 除了重复运动之外,还有一个插件,用于通过+扩展区域和收缩\

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


我知道“.”重复先前的更改,“n”重复先前的搜索,以及其他“repeat”命令,但我不知道有任何命令重复先前的动作(无论是什么动作)。

有一些插件提供此功能:

  • :重复给定计数的动作
  • :使大多数动作可重复
  • :为vim提供重复运动操作的支持(k、j、h、l、w、b、w、b、e、e、ge、ge)

除了重复运动之外,还有一个插件,用于通过
+
扩展区域和收缩
\

有一个命令可以重复使用f、t、f或t进行的每个运动 记住
fx转到下一个出现的字符x
Fx带到x的上一次出现
tx将您带到下一次出现x之前的角色
Tx将您带到上次出现x之后的角色
要重复这些动作,请按

;
要向后重复这些操作(沿oposite方向),请按


没有插件使用

下面是一个详细的示例:

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

int function2(){
   some code here;
   ...
   ...
   return 0;
}
现在让我们假设您想要重写function1和function2的
{}
中的部分

  • 将光标放在
    {}
  • 从正常模式(
    ESC
    ctrl+c
    ),按
    di}
    (用于“删除”内部“{”)
  • 现在您已经删除了函数中的所有内容
  • 现在将光标放在function2的
    {}
  • ;。

对于视觉模式,我认为宏是您唯一的选择(对于
aw
,可能有点过头了)

  • 要开始录制宏,请按
    q
    +
    q
    (最后一个
    q
    可以是任何字母。宏将保存在此处)
  • …执行要重复的操作
  • 再次按q停止录制
要重播这些操作(即使在视觉模式下):

  • @q
    (或您保存它的任何信件)
要将操作重播99次,请执行以下操作:

  • 99@q
    (或您将其保存到的任何信件)

内置重复运动命令
仅适用于运动
fFtT
。无常规命令,您必须使用插件。我想重复
[{
样式的运动。
可重复的运动。vim
可直接用于此(repmo似乎没有)。它存在于emacs中。开始吧,Vim devs!这是迄今为止最好的答案。值得注意的是,当重复
t
t
时,
不同于只再次键入命令。例如,如果键入
t(t(
),则不会超过第一个
字符)。但是如果键入
t(;
,您将转到第二个
。请参阅
:help cpo-;
)。
int function1(){
   some code here;
   ...
   ...
   return 0;
}

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