我如何使用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
)粘贴,它将使用您刚删除的文本(可能不是您想要的)。
请注意,来自默认寄存器的p
或P
粘贴。 等号为""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