我想找到一种方法来创建一个当前缓冲区的副本。
例如,在gVim中,我可以执行以下操作将当前标签复制到新标签中:
:let b = bufnr("%") | tabnew | execute 'buffer' b | *duplicate*
然而,这个问题并不是针对选项卡或gVim的特定问题;我可能会在
split
命令或vert diffsplit
命令之后想要复制缓冲区。(实际上,我意识到我想要复制缓冲区的第一个例子是vert diffsplit
。)理想情况下,我希望保留尽可能多的原始缓冲区和窗口状态,包括光标位置,除了原始缓冲区只读状态被忽略且新缓冲区总是可写。
目前,在遇到此任务时,我键入
ggyG
,打开或移动到新缓冲区,然后键入Vp
,但我不仅失去了新窗口的光标位置,我使用的复制命令也需要失去原始窗口中的位置。这个过程可以简化为单个命令。
:0put
命令后,您可以使用:$d
命令。 - romainl