Vim:从光标位置剪切线并将其粘贴到另一个光标位置

时间:2014-07-01 21:16:30

标签: vim

我无法在任何地方找到这个答案。我使用ddV + d在Vim中删除了一些内容,我想将其粘贴在括号内。我怎么做?

p之后会粘贴,而P之前会粘贴,但我希望它粘贴到我的光标位置。

编辑:我想从某个光标位置(不是整行)切换到行尾并粘贴到另一行的光标位置。

3 个答案:

答案 0 :(得分:3)

当您使用其中任何一种方法进行剪切时,您会在该行的末尾获得换行符。使用换行符时,vim必须在之前或之后放置该行。

要获得所需的行为,您应该使用0D删除,然后删除,然后使用普通p将其放入光标。

如果要从当前光标位置切割到行尾,然后将其粘贴到光标位置的另一行内,则导航执行第一行,执行D切割到行尾,然后移动将光标移动到要粘贴它的位置,然后使用p

答案 1 :(得分:1)

尝试此操作,通常执行Ydd,并创建此映射:

nnoremap <leader>p :let @"=substitute(@","\n","","g")<cr>p
nnoremap <leader>P :let @"=substitute(@","\n","","g")<cr>P

当您按p/P时,它会以默认方式粘贴(使用换行符)。当您按<leader>p /<leader>P时,它会粘贴&#34;在线&#34;。

这不是很干净,因为它更改了@",下次按p时,换行符不再存在。我有点懒,把sub()放在那里,你可以做一点功能,删除换行然后粘贴,而不接触(或粘贴后恢复)@"。并在映射中调用该函数。

我不知道你是否做过10dd,当你做一个&#34; in-line&#34;时,你希望得到什么输出?糊。但是你可以在你的功能中做很多事情来满足你的需求。

编辑,

我不知道你是如何创建映射的,并且&#34;没有工作&#34;。我在这里放了一个动画:

enter image description here

答案 2 :(得分:0)

您可以这样做:

v$d

(move to where you want to put what you just cut)

p or P