代码之家  ›  专栏  ›  技术社区  ›  Martín Fixman

如何在Vim上重复某些动作?

  •  21
  • Martín Fixman  · 技术社区  · 15 年前

    在Vim中,我通常想重复一些命令。说,我想评论5行,我会用

    I//<Esc>j
    .j.j.j.j
    

    有没有办法把最后一个“.j”部分重复几次?

    5 回复  |  直到 15 年前
        1
  •  38
  •   Greg Hewgill    15 年前

    一种方法是将键序列指定给宏,然后运行宏一次,然后按 @@

    qa.jq@a@@
    

    如果知道要重复宏多少次,可以使用 4@@ 或者别的什么。

        2
  •  16
  •   too much php    14 年前

    您可以直观地选择要在其上重复的行,然后键入 :normal! . . 在每一行。因为你从一个视觉选择开始,结果是这样的:

    :'<,'>normal! .
    

    但是,如果要添加和删除 //

    " add // comment with K
    noremap K :s,^\(//\)\=,//,e <BAR> nohls<CR>j
    " remove // comment with CTRL+K
    noremap <C-K> :s,^//,,e <BAR> nohls<CR>j
    

    你可以用 5K 要注释5行,可以使用视觉模式先选择行,也可以只使用锤子 K 直到你把你想说的都说出来。

        3
  •  12
  •   michaelmichael    15 年前

    关于您的具体示例,我更喜欢使用visualblock模式(使用 Ctrl-v

    This should be a comment.
    So should this.
    This is definitely a comment.
    Is this a comment? Yes.
    

    我会去顶行的第一个角色,点击 要进入可视块模式,请导航到最后一行(可能使用 3j 下移3行,也许用 4g G 最后),然后键入 I// <esc> 要同时在所有行上插入注释:

    // This should be a comment.
    // So should this.
    // This is definitely a comment.
    // Is this a comment? Yes.
    

    此外,还有一个非常方便的commenter/un-commenter插件,支持多种语言 here

        4
  •  4
  •   Ardent Coder Michael Richardson    5 年前

    试试这个:

    1. 做点什么

    2. 退出正常模式

    3. 例如,类型, 22.

        5
  •  3
  •   daryn    15 年前

    .,.5s#^#//# (要执行此操作以及接下来的5行)或一个可视块(按v键,然后选择所需的文本),后跟 :%s#^#//# .

        6
  •  3
  •   Greg Bacon    15 年前

    另一种方法是设置标记并在该范围内运行替换:

    ma
    jjjj
    mb
    :'a,'bs,^,// ,