x
删除要删除的字符,然后继续粘贴下一个块。除了x
会将删除的字符放在剪贴板上之外,因此我必须再次重新复制行块。是否有一种方法可以不进入插入模式?
#1 楼
您的选择是:使用黑洞寄存器
_
。例如,要删除一行,您可以输入"_dd
。这将删除而不会影响剪贴板。为原始yank明确命名一个寄存器。例如,要将行拉到命名寄存器中,您可以键入
"ayy
,然后粘贴,则可以键入"ap
请使用yank寄存器检索原始的yank。您可以拉动,然后根据需要删除,然后在粘贴时键入
"0p
使用诸如vim-easyclip之类的插件来提供与delete运算符不同的cut运算符(完整说明:写道)
运行
:help registers
以获得有关前三个的更多详细信息评论
所以对于x我会使用“ _x”?
–durron597
15年2月3日,19:43
没错
– Steve Vermeulen
2015年2月3日,19:44
@ durron597,如果您一次使用x删除一个字符,则您可能应该学习运动删除(dt)之类的删除操作,直到删除d2W的下一个右括号为止,然后删除后面两个空格分隔的标记。然后,您可能会执行类似“ _di {在支撑区域内的操作,这是我一直在做的事情。在正常模式下,这意味着”将“将该支撑区域内的所有内容删除到黑洞中”。
–俄勒冈跟踪
2015年11月5日在1:21
在我的〜/ .vimrc中添加了nnoremap x“ _x(说明在这里:stackoverflow.com/questions/54255/…)。
–维多利亚·斯图尔特(Victoria Stuart)
18/12/20在17:02
#2 楼
x
不会将东西放在剪贴板上,而是将它们放入寄存器中。如果您不告诉它要放入哪个寄存器,则会将其放入未命名的寄存器,这当然会覆盖以前的内容。因此,相反,告诉它要使用哪个寄存器:" REGISTER x
,其中REGISTER是任何单个字母。然后,使用相同的quote-register前缀为p粘贴到该寄存器。 (注意:小写字母替换其内容;大写字母追加)。还有两个特殊寄存器
"0
和"1
。 "0
是最近被选中的(y)文本,即使您使用其他命令(例如x)删除某些文本,该文本也将保留。 "1
是最近删除的文本,只要该文本不小(一行)即可。最后,正如Steve Vermeulen指出的那样,可以通过指定黑洞寄存器"-
来告诉vim不要保存已删除的文本。相关的帮助命令是
"_
。#3 楼
使用:let
命令可以重新定义命名寄存器。在vim的命令行中,按Control + R两次,然后寄存器名称会将寄存器的内容粘贴到命令中。然后,您可以修改其粘贴内容,并保存修改后的寄存器。示例:
在正常模式下,包含文本“ Foo Bar”,键入
"fyy
将整行(yy
)插入f
寄存器("f
)。键入
:let @f='
,然后依次按Control + r,Control + r和f,然后将其粘贴到“ Foo Bar”,因此您的命令行现在将显示:let @f='Foo Bar
,并且光标位于末尾。现在您可以使用箭头和删除键来编辑您刚刚粘贴的内容,例如
:let @f='foo bar baz
。完成报价:
:let @f='foo bar baz'
并按Enter。现在您已将
f
寄存器的内容重新定义为“ foo bar baz”。(这也适用于
1Control + r使您可以在已经处于插入模式的情况下插入寄存器,就像在键入字符一样。两次使用此序列很重要,因为“文本是按原样插入的,而不是像键入的那样。当寄存器包含诸如
:help let
之类的字符时,这是不同的。” — insert.txt vimdoc,<BS>
#4 楼
与@derobert提到的黑洞寄存器"_
有关,您可以在http://vimcasts.org/episodes/meet-the-yank-register/ 中找到有用的截屏视频。删除,删除和放置这些术语,以代替更多的
标准术语剪切,复制和粘贴。以相同的
字母开头,放置和粘贴很容易互换。一旦您习惯了yank这个词,它就会成为copy的同义词。但是Vim使用
单词“删除”是有问题的。在大多数情况下,删除仅是
意味着删除。但是Vim的删除操作会将文本复制到
寄存器中,然后将其从文档中删除。换句话说,Vim的
删除操作就像剪切一样。
评论
这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方留下评论-您始终可以对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论。
–詹姆斯
2015年4月17日,下午3:21
我试图对原始帖子发表评论,但不能。我唯一的选择是我选择的@jamessan
–马龙·莱昂(MarlonLeón)
15年4月17日在18:05
#5 楼
插件ReplaceWithRegisterhttp://www.vim.org/scripts/script.php?script_id=2703(2009-2014)
它建议映射
gr
。/>
扬扬
直观地选择要替换的文本,然后按
gr
移至要替换的下一个块
另外,也可以使用
gr<text object>
进行选择,而无需进行视觉选择。当安装了Tim Pope的
repeat.vim
和Ingo Karkat的visualrepeat.vim
插件时,将支持点重复。
评论
Jasper在Stack Overflow上发现了类似的问题:[有什么方法可以删除vim而又不覆盖您的上一个步骤? [duplicate]](stackoverflow.com/questions/3638542/…)而在vim中,有没有一种方法可以在不将文本放入寄存器的情况下进行删除?