Answers:
您的选择是:
_
。例如,要删除一行,您可以输入"_dd
。这将删除而不影响剪贴板。"ayy
然后粘贴将输入"ap
"0p
运行:help registers
有关前3个的更多详细信息
x
我就用"_x
吗?
x
,则可能应该学会运动删除,例如dt)
删除,直到其下一个右括号d2W
删除下两个空格分隔的标记。然后您可能会"_di{
在支撑区域内做类似的事情,这是我一直在做的事情。在正常模式下,该手段“ 删除一切里面这个支撑体系区域进入黑洞 ”
x
不会将东西放在剪贴板上,而是将它们放入寄存器中。如果您不告诉它要放入哪个寄存器,则会将其放入未命名的寄存器,这当然会覆盖之前的内容。因此,相反,告诉它要使用哪个寄存器:" REGISTER x
,其中REGISTER是任何单个字母。然后,您使用相同的quote-register前缀p从该寄存器粘贴。(注意:小写字母替换其内容;大写字母追加)。
还有两个特殊的寄存器"0
和"1
。"0
是最近被选中的(y)文本,即使您使用其他命令(例如x)删除了一些文本,该文本也将保留。"1
是最近删除的文本,只要该文本不小(一行)即可。删除的小文字会进入"-
。
最后,正如Steve Vermeulen指出的那样,您可以通过指定黑洞寄存器告诉vim不要保存已删除的文本"_
。
相关的帮助命令是:help registers
。
该:let
命令将允许您重新定义命名寄存器。在vim的命令行中,按Control+ R 两次1,然后寄存器名称会将寄存器的内容粘贴到命令中。然后,您可以修改其粘贴内容,并保存修改后的寄存器。
例:
"fyy
将整行(yy
)输入到f
寄存器("f
)中。:let @f='
,和Control+ r,Control+ r一遍,然后f,你应该看到它粘贴到“富酒吧”,让您的命令行现在如下所示:let @f='Foo Bar
,用光标在最后。:let @f='foo bar baz
。:let @f='foo bar baz'
并点击Enter。现在,您已经将f
寄存器的内容重新定义为“ foo bar baz”。
(这也适用于宏!:help let
有关更多信息。)
1 Control + r让您可以在已经处于插入模式的情况下插入寄存器,就像在键入字符一样。两次使用此序列很重要,因为“文本是按字面意思插入的,而不是像键入的那样。当寄存器包含类似的字符时,这是不同的<BS>
。” — insert.txt vimdoc,:help i_CTRL-R_CTRL-R
与"_
@derobert提到的黑洞寄存器有关,您可以在http://vimcasts.org/episodes/meet-the-yank-register/中找到有用的截屏视频。
Vim使用术语delete,yank和put代替了更标准的术语剪切,复制和粘贴。以相同的字母开头,放置和粘贴很容易互换。一旦您习惯了yank这个词,它就会成为copy的同义词。但是Vim使用'delete'这个词是有问题的。在大多数情况下,'delete'意味着删除。但是Vim的删除操作将文本复制到寄存器中,然后将其从文档中删除。换句话说,Vim的删除操作就像剪切一样。
http://www.vim.org/scripts/script.php?script_id=2703(2009-2014)
它建议映射gr
。
gr
或者,使用gr<text object>
它来进行视觉选择。安装repeat.vim
了Tim Pope和visualrepeat.vim
Ingo Karkat 的插件时,将支持dot-repeat 。