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