Vim粘贴--滚动浏览先前拖动的文本

Vim粘贴--滚动浏览先前拖动的文本,vim,Vim,我正试图提高Vim中粘贴功能的可用性,因为太多不同的删除操作(事实上我确实认为它们都是)也会猛拉到粘贴缓冲区 这意味着我不再能够删除我想粘贴到某个地方的某个文本,清理某个内容,然后执行粘贴操作。我不知道为什么这是我喜欢做的事情的顺序,但我不会改变它 基本上,我必须在返回进行清理之前“原子地”移动,否则我会得到令人沮丧的逗号、括号或空格粘贴。哦,我知道我为什么按其他顺序做。这显然更有效。我不必移动到目的地,然后返回清理,然后再返回 如何改进这一点?我的建议是一个插件,可以用来增加粘贴操作后的事实。

我正试图提高Vim中粘贴功能的可用性,因为太多不同的删除操作(事实上我确实认为它们都是)也会猛拉到粘贴缓冲区

这意味着我不再能够删除我想粘贴到某个地方的某个文本,清理某个内容,然后执行粘贴操作。我不知道为什么这是我喜欢做的事情的顺序,但我不会改变它

基本上,我必须在返回进行清理之前“原子地”移动,否则我会得到令人沮丧的逗号、括号或空格粘贴。哦,我知道我为什么按其他顺序做。这显然更有效。我不必移动到目的地,然后返回清理,然后再返回

如何改进这一点?我的建议是一个插件,可以用来增加粘贴操作后的事实。点击
p
,看到它粘贴了一个无用的暂时删除的字符,此时(粘贴操作后立即),我们的插件将允许一个键在先前删除的寄存器中循环,更新我们的粘贴位置

通过这种方式,我可以删除所有我想要的东西,并且我实际上能够快速地提取任何最近删除的项目,只要它是一个连续的段。这当然很容易设置,只需进行一个可视选择,然后进行删除。这是为了便于使用而交换特殊性,因为我不再需要记住为特定的粘贴指定特定的命名寄存器

特别是,应该有一个堆栈,可将拖动和删除累积到其中,稍后在粘贴过程中使用单个绑定快速遍历该堆栈


有没有一个插件已经做到了这一点

为什么不使用命名寄存器?例如,使用
“ay
猛拉注册
a
,然后
“ap
稍后再从中粘贴,同时它不会被正常删除等操作所破坏。

您对编号的寄存器有点困惑()

只有一个yank寄存器,即
“0

除此之外,还有九个编号为的删除寄存器
“1
“9
。这些寄存器作为队列填充,最新的删除位于顶部

对于删除寄存器
“1
“9
Vim具有您要求的内置功能:您可以粘贴
“1p
,如果它不是您想要的,您可以重复
u.
u.
切换寄存器
“2
“3
“4
等,直到找到合适的。此行为记录在

滚动浏览以前被拉出来的文本通常是通过插件完成的,我知道插件是最流行的

  • ,“保存以前的yanks、更改和删除的历史记录”,以及
  • ,“emacs用于vim的压井环的轻量级实现”
因为寄存器
0
仍然包含您拖动的内容(
lorem
),即使经过大量
c
d
s
,执行
“0p
操作将始终粘贴
lorem
,直到您明确拖动其他内容

我的示例只涉及Vim称之为“小删除”的内容,因此不使用编号的寄存器;当执行较大的操作时,Vim也使用寄存器
1-9
,但它不会改变寄存器
0
的行为,它始终保持最新的显式删除

:h registers
是一个好的、易于理解的读物:Vim有很多特性,插件不是万能的


另外,请参阅建议使用黑洞寄存器。

我已经读了3遍了,我不明白这个问题。你是否在寻找如何使用寄存器存储要粘贴的不同文本?你是否使用过像YouCompleteMe这样的插件?我说的是一个可以追溯更新“错误粘贴”的插件“进入先前的一个在拉克缓冲区的位置。也就是说,我点击
p
,插入了
“0
。我想点击
插件键
,将刚刚粘贴的
“0
替换为
“1
,等等。不,那个对我来说是新的。尽量保持我的vim清洁…当然。YCM无疑是一个更难使用的插件,因为它有一个本地编译组件,需要python。。。但这一切都值得我去做。我在问题中提到了这一点。考虑这至少是六个额外的击键,<代码>移位<代码> +<代码> <代码> +>代码> A<代码>代码两次。所有不同的钥匙。以特定的顺序。这永远不会很快。美国佬已经进入了登记册。只是需要一个循环的方法。嘿,谢谢你澄清这个行为。如果没有人这样解释,就很难做到正确(即使是这样,我也试了好几次)。它似乎要求您指定
“1p
,然后点才能通过继续向上寄存器运行,并且就像您提到的那样,必须使用
u
。不过,作为默认功能,这并不太糟糕,尽管它对我的使用不实用,因为在
p
失败后必须键入
“1p
(这意味着我也要点击
u
)感觉太麻烦了,如果功能强大的话。yankstack插件正是医生要的。谢谢!
[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"