代码之家  ›  专栏  ›  技术社区  ›  David Robie

VIM:寄存器中填充字符断点宏的有向图

  •  1
  • David Robie  · 技术社区  · 1 年前

    如果我这样做 q e CTRL+W 右箭头 q ,它将命令“在拆分中向右移动一个窗口”绑定到 e 钥匙。

    此宏由找到 " e p ^W<80>kr .

    如果我想打这个,我会的 CTRL+K EB 对于 ^W , CTRL+K PA 对于 <80> ,而且很简单 kr 对于 kr .然后,与 " e yy ,我可以将此命令序列拖入 e 注册。

    然而,我逐渐意识到 Padding Character (PAD) <80> CTRL+K PA 方法实际上不起作用,并破坏了宏。

    为什么键入的填充字符不起作用?在录制时执行命令时,它与VIM生成的填充字符有何不同? 它们看起来完全一样,VIM甚至为它们应用了相同的配色方案。


    编辑1

    我也试过了 ga 在生成的VIM上<80>我打了一个。据说他们俩都是 <<80>> 128, Hex 0080, Oct 200, Digr PA ,其中内部 <80> 蓝色,外层 <> 是白色的。

    我通过逐一编辑和测试工作管柱直到其断裂,确认是PA有向图造成了麻烦。

    1 回复  |  直到 1 年前
        1
  •  1
  •   romainl    1 年前

    宏观是 存储在 不“受约束” 登记 ,而不是“钥匙”, "e :你不按 e 要执行它,请按 @e .

    不幸的是,Vim在其录音中添加了很多毫无意义的垃圾。那些 <80>kr , <fd>a 在编辑或只是试图理解录制的宏时,伪影会产生太多的噪音。没有简单的方法可以阻止Vim在现有的宏中添加或删除它们。即使这样的替代也不起作用:

    :call getreg("e")->substitute("\%u0080", "", "g")->setreg("e")
    

    因为,无论出于什么原因,这些 <80> 宏观中的s并不是真的 <80> 它们基本上是不可搜索的。

    正如你所发现的,推论是 <80> 您手动插入的与 <80> 这是你在宏观上所期望的。

    真是一团糟。

    在处理宏时要记住的重要一点是 <80> s和朋友都是纯粹的垃圾,毫无用处。如果你从不手动编辑宏,你可以完全忽略它们,继续你的生活,但如果你这样做了,你应该在有机会的时候删除它们,永远不要尝试添加它们。

    在这种情况下,Vim使用 <80>kr 作为内部代表 <Right> ,噪音越大越好。将宏重写为:

    ^Wl
    

    将使其在不影响其功能的情况下更具可读性。这将是更改宏的最明智的方法,使其在另一个方向上循环窗口:

    ^Wh
    

    我重复一遍:

    • 当你看到他们,杀了他们,
    • 永远不要试图添加它们。