从“实用vim”来看,我认为最好的做法是尝试移动、行动,然后重复。
说我有这个字符串:
foo_bar fooo_bar foo abar foo_bar
Run Code Online (Sandbox Code Playgroud)
我想向前移动直到找到一个f
,然后删除直到找到一个b
,然后重复。
我会认为以下内容会起作用:
ff
dtb
;
.
;
.
Run Code Online (Sandbox Code Playgroud)
ff
将是移动的命令,然后dtb
是行动的命令。
但是,当我按下 时;
,它会前进到下一个之前b
,而我想重复我的“移动”命令,即ff
.
有没有办法做到这一点,这样“行为”命令就不会改变“移动”命令的行为?
;
重复最新的fFtT
,在您的情况下,是tb
,不是ff
。没有办法让;
重复的东西。
以下是替代方法……
与:help /
:
ff
d/b<CR> " delete until next b
;
.
;
.
Run Code Online (Sandbox Code Playgroud)
正如@mattb 所提到的,诀窍是使用fFtT
与操作不同的动作,以便您ff
始终使用;
或重复最新的动作,
。
与:help recording
:
qq " start recording in register q
ff
dtb
q " stop recording
@q " play it back
@q " play it back
Run Code Online (Sandbox Code Playgroud)
诀窍是将初始运动和操作封装到一个宏中,可以一遍又一遍地重复;
,根本不涉及。