到字母,然后删除直到字母,然后重复

mar*_*lli 2 vim

从“实用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.

有没有办法做到这一点,这样“行为”命令就不会改变“移动”命令的行为?

rom*_*inl 6

;重复最新的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)

    诀窍是将初始运动和操作封装到一个宏中,可以一遍又一遍地重复;,根本不涉及。