Vim非常好用,但是像许多人一样,当我想复制、删除和粘贴时,我的yank缓冲区会被删除操作覆盖掉,这真的很烦人。现在我知道有101种解决方法和映射,其中一些在像这个帖子中列举出来:Any way to delete in vim without overwriting your last yank? 但所有这些解决方案都有缺点,即使我是一个缓冲区大师(我不是),例如,过多的按键 - 而当我通常快速删除4个字符时,我通常会使用xxxx (只需一个按键,因为我按住它并等待自动重复),现在对我来说,切换到,x,x,x,x或其他映射以使用不同的缓冲区是不现实的。
真正理想的是一个模式切换,可以切换D、d、X和x键的副作用行为,以便它们交替地执行或不执行它们的文本写入缓冲区。这样我就可以简单地进入“无副作用”模式,随心所欲地删除,然后在准备好时粘贴。如有必要,重新启用副作用。有人知道如何做到这一点吗?
[更新:解决方案] 好的,我得到了:我编写了一个函数来切换“无副作用”模式......完美!请参见下面接受的正确答案。
[更新#2] 我的解决方案仍然非常好,当我需要大量删除和粘贴时,我经常使用它。但与此同时,我还发现了一种更轻便的方法,以满足复制、粘贴、删除的特定用例,其中要删除的文本是连续的。正常进行yank文本后,我使用v命令可视化突出显示要删除的文本,然后使用p命令直接将其粘贴覆盖。 这样就可以实现所需的效果,而不需要任何特殊映射。
这个工作流程唯一的问题是如果我想再次粘贴,原始的粘贴缓冲区会被粘贴突出显示的文本覆盖掉,但是通过以下在.vimrc中的映射很容易改变这种行为:
真正理想的是一个模式切换,可以切换D、d、X和x键的副作用行为,以便它们交替地执行或不执行它们的文本写入缓冲区。这样我就可以简单地进入“无副作用”模式,随心所欲地删除,然后在准备好时粘贴。如有必要,重新启用副作用。有人知道如何做到这一点吗?
[更新:解决方案] 好的,我得到了:我编写了一个函数来切换“无副作用”模式......完美!请参见下面接受的正确答案。
[更新#2] 我的解决方案仍然非常好,当我需要大量删除和粘贴时,我经常使用它。但与此同时,我还发现了一种更轻便的方法,以满足复制、粘贴、删除的特定用例,其中要删除的文本是连续的。正常进行yank文本后,我使用v命令可视化突出显示要删除的文本,然后使用p命令直接将其粘贴覆盖。 这样就可以实现所需的效果,而不需要任何特殊映射。
这个工作流程唯一的问题是如果我想再次粘贴,原始的粘贴缓冲区会被粘贴突出显示的文本覆盖掉,但是通过以下在.vimrc中的映射很容易改变这种行为:
vnoremap p "_dp
vnoremap P "_dP
vimrc
文件中的。像nnoremap dd "_dd
这样的代码是否在你的vimrc
文件中可用? - nonexxxx
而不是4x
? - Radon Rosborough