Vim 很棒,但是像很多人一样,当我想复制、删除、然后粘贴时,我真的很生气—— yank 缓冲区被删除操作覆盖了。
现在我知道有 101 种解决方法和映射,其中一些在像这样的帖子中被列举:任何方式在 vim 中删除而不覆盖你最后的 yank?
但是所有这些解决方案都有缺点——即使我是缓冲专家(我不是)。例如,过多的击键——而我通常 xxxx 快速删除 4 个字符(只是一个击键因为我按住它并等待自动重复),我现在切换到 ,x,x,x,x 或无论映射我必须使用不同的缓冲区。
真正理想的是简单的模式切换,您可以切换 D、d、X 和 x 键的副作用行为,以便它们交替执行或不将其文本写入缓冲区。这样我就可以简单地进入“无副作用”模式并删除到心的内容,然后在我准备好时粘贴。如果需要,可以重新启用副作用。
有谁知道这样做的方法?
[更新:解决方案] 好的,我明白了:我编写了一个切换“无副作用”模式的函数......完美运行!请参阅下面我接受的正确答案
[更新 #2] 我的解决方案仍然很有效,当我进行大量删除和粘贴时,我一直使用它。但与此同时,我还找到了一种更轻松的方法来满足复制、粘贴、删除的特定用例,用于要删除的文本是连续的简单情况。
正常拉出文本后,然后我使用 v 命令直观地突出显示要删除的文本,然后使用 p 命令简单地粘贴它。无需任何特殊映射即可达到预期效果。
这个工作流程的唯一问题是,如果我想再次粘贴,原来的粘贴缓冲区会被突出显示的文本粘贴的行为覆盖,但是这种行为很容易通过 .vimrc 中的以下映射进行更改:
vnoremap p "_dp
vnoremap P "_dP