在Vim中,是否有用于粘贴(p)的相应更改(c)命令?
通过插入,可以很容易地删除单词/部分并在其上插入,如下所示在Vim中,是否有用于粘贴(p)的相应更改(c)命令?,vim,copy-paste,paste,yank,Vim,Copy Paste,Paste,Yank,通过插入,可以很容易地删除单词/部分并在其上插入,如下所示 cw删除到字尾(带空格),然后进入插入模式 ce删除到字尾(无空格),然后进入插入模式 c3w删除,直到下3个单词(带空格)结束,然后进入插入模式 ct.delete,直到句点之前,然后进入插入模式 c$删除到行尾,然后进入插入模式 如何使用粘贴操作执行此操作?我经常有这样一句台词 var name = "John Smith" var name = "Jane Smith" 我把它改成 var name = "John Lee"
删除到字尾(带空格),然后进入插入模式cw
删除到字尾(无空格),然后进入插入模式ce
删除,直到下3个单词(带空格)结束,然后进入插入模式c3w
delete,直到句点之前,然后进入插入模式ct.
删除到行尾,然后进入插入模式c$
var name = "John Smith"
var name = "Jane Smith"
我把它改成
var name = "John Lee"
var name = "Jane Smith"
和yank(
yw
)“Lee”,但现在如果我从“Jane Smith”中删除(dw
)“Smith”,我的注册表中就不再有“Lee”可粘贴了。我知道我可以使用指定的寄存器。此外,我相信我可以使用视觉模式。然而,我认为,由于这是一项非常常见的任务,有一种方法可以使用移动操作符(e
,w
,t
/t
,f
,$
,0
)和粘贴命令来指定要粘贴的内容。哦,是的,你想要的是超方便(讽刺)黑洞寄存器:在视觉模式下,使用所需的移动(如vw
)选择要更换的零件,然后“\u xP”
黑洞寄存器
\u
是一个类似于/dev/null
的特殊寄存器。操作“
为要替换的文本设置目标寄存器,因此”\u
确保不需要的“Smith”命中黑洞寄存器。因此,“Lee”保留在“
寄存器中。如果您连续多次这样做,我建议您使用宏来提供帮助。我认为视觉模式是最佳选择。您只需使用v或v启用视觉模式(如果您想同时覆盖整行),使用移动操作符以常规方式选择要替换的区域,然后粘贴。你利用你已经知道的东西
Vp覆盖当前行。vwp覆盖当前单词
您可以在网站上找到备选方案的概述
实际上,Lee
在reg:0
中,至少有两种方法可以粘贴回去
方法1
- 将光标移动到李,yw
- 将光标移动到史密斯,dw
- “0P
- 将光标移动到李,yw
- 将光标移动到史密斯,cw
- Ctrl-R+0
nnoremap,pw viw“0p
它粘贴在内部单词(iw)
最后一个拖动的文本上。请注意,我使用的是0寄存器,因此我可以粘贴任意次数,而不会丢失拖动的文本。不幸的是,您需要编写一些其他映射。我希望有一个映射来粘贴内引号
,内括号
和内括号
:
nnoremap ,pi" vi""0p
nnoremap ,pi] vi]"0p
nnoremap ,pi) vi)"0p
我意识到这个答案很复杂,并且混合了几个概念——希望它能有所帮助,我很想看看是否有更好的方法来实现这一点。这仅仅是我能想到的最好的方法(我经常使用),它实际上只是一种不同的方法来实现寄存器的粘贴+1用于引用
/dev/null
虽然我想知道,如果一个映射接受参数,然后总是使用寄存器0,那么它是否可行
nnoremap ,pi" vi""0p
nnoremap ,pi] vi]"0p
nnoremap ,pi) vi)"0p