使用Vim我经常想用我刚刚拉出的块替换代码块.
但是当我删除要替换的代码块时,该块本身会进入寄存器,该寄存器会擦除我刚刚移动的块.所以我习惯于yanking,然后插入,然后删除我不想要的东西,但是对于大块代码,这会变得混乱,试图保持插入的块和块分开删除.
那么在Vim中替换文本的最简单,最快捷的方法是什么?
我喜欢vim,但我遇到的一个问题是每当我使用x或d删除文本时,它都会将删除的文本复制到缓冲区/剪贴板中.
更具体地说,当我复制了一些文本时,这是一个问题,然后我需要在粘贴第一个文本之前删除第二个文本块.
是否有删除文本但不复制文本的命令?如果没有,是否有自定义命令?
谢谢!
Vim很棒,但是和很多人一样,当我想要复制,删除,然后粘贴时,我会非常恼火 - 抓取行动会覆盖yank缓冲区.
现在我知道有101种解决方法和映射,其中一些是在这样的帖子中列举的:有什么办法在vim中删除而不覆盖你的上一次猛拉?
但所有这些解决方案都有缺点 - 即使我是一个缓冲大师(我不是).例如,多余的键击 - 而我通常xxxx快速删除4个字符(只有一个按键因为我按住它并等待自动重复),现在切换到x,x,x,x或无论映射我必须使用不同的缓冲区.
真正理想的只是一个模式切换,你可以打开和关闭D,d,X和x键的副作用行为,这样他们可以交替地或不也将它们的文本写入缓冲区.这样我就可以简单地进入"无副作用"模式并删除内容,然后在我准备好时粘贴.如果需要,重新启用副作用.
有谁知道这样做的方法?
[更新:解决方案]好吧我明白了:我写了一个能够切换"无副作用"模式的功能......完美运行!请参阅下面我接受的正确答案
[更新#2]我的解决方案仍然很好用,我一直在使用它时,我正在进行大量的删除和粘贴.但同时我还发现了一种更简单的方法来满足复制,粘贴,删除的特定用例 - 对于要删除的文本是连续的简单情况.
在正常处理文本之后,我会使用v命令在视觉上突出显示要删除的文本,然后使用p命令将其粘贴到其上.在没有任何特殊映射的情况下实现了期望的效果.
这个工作流程的唯一问题是,如果我想再次粘贴,粘贴突出显示文本的行为会覆盖原始粘贴缓冲区,但是使用.vimrc中的以下映射可以轻松更改此行为:
vnoremap p "_dp
vnoremap P "_dP
Run Code Online (Sandbox Code Playgroud)