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