【问题标题】:vim macro not recording movement commands at the endvim 宏最后没有记录移动命令
【发布时间】:2012-03-16 22:27:47
【问题描述】:

我有一段类似下面的文字 -

blah blah 1 blah blah
blah 1 blah 1 blah

我想复制它 n 次,但每次粘贴时递增整数(上面的 1)。有点像 -

blah blah 1 blah blah
blah 1 blah 1 blah

blah blah 2 blah blah
blah 2 blah 2 blah

blah blah 3 blah blah
blah 3 blah 3 blah

我将光标放在块的开头并开始在 reg a 中使用“qa”录制宏 并输入'y2jp^Aj0^Aw^Ak0'。用英语 - 复制并粘贴块,递增每个数字并返回到新粘贴块的开头,以便可以再次运行宏。

除了末尾的“k0”部分外,一切正常,它不会将光标移动到新粘贴块的开头。谁能指出我做错了什么?

编辑

@sehe 当我运行你建议的宏时,我得到了关注 -

废话 1 废话 呜呜呜1呜呜呜 废话1 废话0.w.yk0 呜呜呜呜呜呜呜

看起来 vim 在 ^A ​​之后仍处于插入模式。
:-/

【问题讨论】:

    标签: vim


    【解决方案1】:

    我认为有更好的方法来实现你正在做的事情,我实际上并没有查看你的问题的细节,只是这里有一个对我有用的宏:

    2Yjp^Aj0.w.yk0

    我认为您正在做相反的事情(插入顶部?) - 问题可能是光标无法在第一行之前向上移动(?尚未测试)。

    无论如何,在20@a 之后我得到:

    blah blah 1 blah blah
    blah 1 blah 1 blah
    blah blah 2 blah blah
    blah 2 blah 2 blah
    blah blah 3 blah blah
    blah 3 blah 3 blah
    blah blah 4 blah blah
    blah 4 blah 4 blah
    blah blah 5 blah blah
    blah 5 blah 5 blah
    blah blah 6 blah blah
    blah 6 blah 6 blah
    blah blah 7 blah blah
    blah 7 blah 7 blah
    blah blah 8 blah blah
    blah 8 blah 8 blah
    blah blah 9 blah blah
    blah 9 blah 9 blah
    blah blah 10 blah blah
    blah 10 blah 10 blah
    blah blah 11 blah blah
    blah 11 blah 11 blah
    blah blah 12 blah blah
    blah 12 blah 12 blah
    blah blah 13 blah blah
    blah 13 blah 13 blah
    blah blah 14 blah blah
    blah 14 blah 14 blah
    blah blah 15 blah blah
    blah 15 blah 15 blah
    blah blah 16 blah blah
    blah 16 blah 16 blah
    blah blah 17 blah blah
    blah 17 blah 17 blah
    blah blah 18 blah blah
    blah 18 blah 18 blah
    blah blah 19 blah blah
    blah 19 blah 19 blah
    blah blah 20 blah blah
    blah 20 blah 20 blah
    blah blah 21 blah blah
    blah 21 blah 21 blah
    

    【讨论】:

      【解决方案2】:

      我不确定您使用k0 出了什么问题,但要让光标返回,您可能会发现使用标记更容易。例如:

      2Yjpma^Aj0^Aw^A`a

      【讨论】:

      • 在粘贴文本的第一行之后再次显示文本 j0^AW^A`a。
      • @Raminder:您是否正在复制/粘贴宏并将“^”和“A”作为单独的字符而不是 Ctrl-a?然后“A”会让你进入插入模式。
      【解决方案3】:

      为什么不:

      p
      :,+2s/\d\+/\=1+submatch(0)/g "replaces digits by 1+value on all occurences till line + 2
      :-2,y "yanks from line - 2 till current line (=last line with replacement)
      

      ?

      【讨论】:

        猜你喜欢
        • 2017-05-11
        • 2023-04-09
        • 2022-11-29
        • 1970-01-01
        • 2012-02-14
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多