我可以找到很多关于Vim中“剪切”和“复制”文本的狭隘方面的部分解释以及它如何工作的几个相互矛盾的想法,但我找不到简单的概述。我正在寻找的是将它们放在一个地方的东西。我很确定我在这里有什么不对,并且有差距,但我想要一个完整的简明解释,如下所示:
key operation register used notes
y yank "" "0 and "1
x del 1 char "1 why doesn't xxxxxx fill all registers?
dd del line "" and "1
d[?] del [motion] "1
a p (put) with no specified register will put from register "1 (I think)
if an operation uses register "1 to store deleted/yanked text, then "1's
previous contents will be pushed to "2 and so on up to register "9 whose
previous content will disappear.
a "[alphanumeric] (quote followed by alphanumeric) before a d or y will
put the result into that register in addition to the registers it would
normally go in.
是的,这个问题在人们询问某个特定操作的详细信息时多次被部分重复。如果有任何我错过的操作将文本放入删除或抽屉寄存器中,我也想知道这些操作。
答案 0 :(得分:5)
您应该可以在:help "0
找到完整的说明。您的摘要大部分都是正确的,但是,小删除会丢失,而这些删除会进入特殊的"-
注册。
key operation register used notes
y yank "" and "0
x del 1 char "" and "- small delete register
dd del line "" and "1
d[?] del [motion] "" and ("1 or "-) depending on the length of the text
a p (put) with no specified register will put from the default register ""
答案 1 :(得分:0)
对于那些懒得输入:help "0
的人,正如Ingo的答案所示,这是我帮助所说的缩写版本:
- 未命名注册""
醇>Vim使用" d"," c"," s"," x"删除文本。命令或用yank" y"复制命令,无论是否使用特定寄存器(例如" xdd)。这就像未命名的寄存器指向最后使用的寄存器。因此,当使用大写寄存器名称附加时,未命名的寄存器包含与指定寄存器相同的文本。对于任何未指定寄存器的put命令(p或P),Vim使用未命名寄存器的内容。此外,您可以使用名称'"'来访问它。这意味着您必须键入两个双引号。写入""寄存器写入寄存器" 0。
- 编号寄存器" 0至" 9
醇>Vim用来自yank和delete命令的文本填充这些寄存器。编号寄存器0包含最近的yank命令中的文本,除非命令指定了另一个[" x]寄存器。编号寄存器1包含最近删除或更改命令删除的文本,除非命令指定另一个寄存器或文本少于一行(然后使用小删除寄存器)。使用这些移动命令对delete运算符进行例外:%,(,),`,/,?,n,N,{和}。然后始终使用注册" 1。如果删除在一行内,也使用" - 寄存器。
每次连续删除或更改,Vim都会移动先前的内容 将寄存器1放入寄存器2,2,将其转换为3,依此类推,丢失以前的寄存器 登记册9的内容。
- 小删除寄存器" -
醇>该寄存器包含删除少于一行的命令的文本, 除非命令使用[" x]指定寄存器。