我如何使用vim寄存器?

我只知道使用寄存器的一个实例是通过CtrlR *从而从剪贴板粘贴文本。

寄存器的其他用途是什么? 如何使用它们?

关于VI寄存器的所有知识(让我们专注于vi 7.2) - 与我们分享。


Vim中的寄存器允许您对存储在其中的文本执行操作或命令。 要访问一个寄存器,可以在命令之前输入"a ,其中a是寄存器的名称,如果要将当前行复制到寄存器k ,可以键入

“KYY

或者您可以使用大写字母追加到注册表中

“KYY

然后,您可以在文档中移动并使用它将其粘贴到其他位置

“KP

从系统剪贴板粘贴到Linux上

“+ P

要从Windows上的系统剪贴板粘贴(或从Linux上的“鼠标突出显示”剪贴板)

“* P

要访问所有当前定义的寄存器类型

:REG


当我发现0寄存器时,我很高兴。 如果您将文本分配给某个特定的寄存器,那么它将被分配到0寄存器,并保存在默认的"寄存器中” 0"寄存器之间的区别在于0仅填充了被抽出的文本,而默认寄存器中也填充了使用d / D / x / X / c / C / s / S命令删除的文本。

当我想复制一些文本,删除某些内容并将其替换为复制的文本时,我发现这很有用。 以下步骤举例说明:

  • y[motion]抽出要复制的文本 - 该文本保存在"0寄存器中
  • d[motion]删除要替换的文本 - 此文本保存在"注册”中
  • "0p粘贴被抽出的文本
  • 其中"是为下一个命令使用寄存器的命令。

    在最后一步中,如果您要从默认注册表(使用p )粘贴,它将使用您刚删除的文本(可能不是您想要的)。

    请注意,来自默认寄存器的pP粘贴。 等号为""p (或""P ), "0表示最后一次放下, "1表示最后一次删除或更改。

    欲了解更多信息,请参阅:help registers


    我最喜欢的关于寄存器的部分之一是使用它们作为宏!

    假设您正在处理制表符分隔的值文件,如下所示:

    ID  Df  %Dev    Lambda
    1   0   0.000000    0.313682
    2   1   0.023113    0.304332
    3   1   0.044869    0.295261
    4   1   0.065347    0.286460
    5   1   0.084623    0.277922
    6   1   0.102767    0.269638
    7   1   0.119845    0.261601
    

    现在您决定需要在%Dev字段末尾添加百分比符号(从第二行开始)。 我们将在(任意选择的) m寄存器中创建一个简单的宏,如下所示:

  • 按: qm :开始在m寄存器下录制宏。

  • EE :转到第三栏的末尾。

  • a :插入模式以追加到本栏末尾。

  • % :输入我们要添加的百分号。

  • <ESC> :回到命令模式。

  • j0 :转到下一行的开头。

  • q :停止录制宏

  • 我们现在只需键入@m就可以在当前行上运行这个宏。 此外,我们可以输入@@重复,或者100@m重复100次! 生活看起来不错。

    此时你应该说,“ 但是等待,这是否需要使用寄存器进行检查 ?”

    优秀点。 让我们通过键入"mp调查m寄存器的内容,然后我们得到以下结果:

    EEa%<ESC>j0
    

    起初,这看起来像是不小心在记事本中打开了一个二进制文件,但第二眼看来, 它就是我们宏中的确切序列!

    你是一个好奇的人,所以让我们做一些有趣的事情,并编辑这行文本插入! 而不是枯燥的旧%

    EEa!<ESC>j0
    

    然后,让我们通过键入B"nyE来将它放到n寄存器中,然后,只需要踢,就可以使用@n ....在我们的数据行上运行n

    OMG,它增加了一个!

    从本质上讲,运行宏就像按下该宏的寄存器中的确切序列键。 如果这不是一个很酷的登记技巧,我会吃我的帽子。

    链接地址: http://www.djcxy.com/p/3861.html

    上一篇: How do I use vim registers?

    下一篇: How to effectively work with multiple files in Vim?