我喜欢使用vim,但经常会遇到以下问题:
- 复制一行
- 移动到希望粘贴的位置
- 删除该位置原有的内容
- 粘贴你之前复制的内容,却发现它粘贴了你之前删除的内容
显然,正确的操作是先删除再复制。但如果我不想这样做,有什么技巧可以解决吗?Vim是否有一个可靠的粘贴缓冲区,或者是否有我可以更改的.vimrc设置?
我觉得所有这些键盘组合很麻烦。相反,我编写了一个函数来切换vim的“副作用”行为,从而避免删除操作覆盖缓冲区。这样,您只需切换它关闭,自由删除,然后完成后再切换回来。
请参见我的答案:https://dev59.com/-2jWa4cB1Zd3GeqPvfH8#12649560
要使用它,只需将其放入您的.vimrc文件中即可。
诀窍在于你知道你想要抓取并移动什么,而且你正在使用“懒惰”的第一个寄存器(它将被刚刚删除的任何内容替换)。
你需要学会在vim中“剪切”。
在删除之前,指定与"
不同的任何寄存器。提示:使用:reg
查看您的寄存器
现在,在任何命令之前(显然是在命令模式下),按"
选择一个新的寄存器
1
)并删除:"1d
或"1x
甚至"1c
"1p
或"1P
完成。这也有一个优点,解决了用例:从一个地方删除5个不同的东西,每个部分都去不同的目的地...只需将一个放在"1
,另一个放在"2
"等等...到达每个目的地并粘贴即可。
source $VIMRUNTIME/mswin.vim
和behave mswin
。 - Cristian Ciupitu*
寄存器。你可以使用vim命令将任意的移动内容复制到系统剪贴板,例如"*y/foo<enter>
将把光标到下一个 "foo" 的文本复制到Windows剪贴板中。(如果使用 mswin/Ctrl-C,你需要先进入可视化模式。) - dash-tom-bang