我正在尝试提高Vim中粘贴功能的可用性,因为太多不同的删除操作(事实上我确实认为它们都是它们)也会被移动到粘贴缓冲区.
这意味着我不再能够删除某些文本,我想要粘贴到某个地方,清理一些东西,然后再粘贴.我不知道为什么这是我喜欢做的顺序,但我不打算改变它.
在返回清理之前,我必须"原子地"进行移动,否则我会得到令人沮丧的逗号或括号或空格.哦,我知道我之所以按照其他顺序这样做的原因.它只是更有效率.我不必移动到目的地,然后返回清理,然后再回去.
如何改善这个?我的建议是一个插件,可用于在事后增加粘贴操作.点击p,看到它粘贴了一个无用的短暂删除的字符,并且此时(粘贴操作后立即)我们的插件将允许一个键循环通过以前删除已经删除的寄存器,就地更新我们的粘贴.
通过这种方式,我可以删除我想要的所有内容,而且我实际上能够快速提取任何最近删除的项目,只要它是一个连续的段.当然,使用视觉选择和删除进行设置很容易.这使易用性具有特异性,因为我不再需要记住指定一些特定的命名寄存器来用于特定的粘贴.
特别是,应该有一个堆栈,yanks和deletes都会累积进去,后来在使用单个绑定进行粘贴时会快速遍历.
那里有插件吗?
glt*_*lts 24
你对编号寄存器(:h quote_number)有点困惑.
只有一个抽牌注册,就是这样"0.
单独从有九个号删除寄存器"1来"9.它们作为队列填充,最近的删除位于顶部.
对于删除的寄存器"1来"9Vim有你所要求的内置功能:你可以粘贴"1p,如果它是不是你要找的内容可以重复u. u. u.通过寄存器切换"2,"3,"4等,直到你找到了合适的人.此行为记录在:h redo-register.
滚动浏览以前被拉动的文本通常使用插件完成,这是我所知道的最受欢迎的插件
为什么不使用命名寄存器?例如,使用"ayyank注册a,然后"ap再次粘贴它,并且在此期间它不会受到正常删除等的破坏.
[l]orem ipsum dolor sit amet
yiw yanks "lorem" in @" and @0
lorem [i]psum dolor sit amet
daw deletes "ipsum " into @", @0 still contains "lorem"
lorem dolor [s]it amet
ciwfoo deletes "sit" into @" and inserts "foo", @0 still contains "lorem"
Run Code Online (Sandbox Code Playgroud)
因为 register0仍然包含您猛拉 ( lorem) 的内容,即使在多次c, d, 之后s,执行操作"0p也会始终粘贴,lorem直到您明确猛拉其他内容为止。
我的例子只涉及 Vim 所谓的“小删除”,所以没有使用编号的寄存器;当你做更大的操作时,Vim 也使用寄存器,1-9但它不会改变寄存器的行为,0它总是保持最新的显式 yank。
:h registers 是一本很好且易于理解的读物:Vim 有很多功能,插件并不能解决所有问题。