gpt4 book ai didi

vim - 如何在 Vim 中复制缓冲区?

转载 作者:行者123 更新时间:2023-12-01 03:51:33 24 4
gpt4 key购买 nike

我正在寻找一种方法来创建一个新缓冲区,它是当前缓冲区的副本。

然后,我可以执行以下操作,将当前选项卡复制到 gVim 中的新选项卡,例如:

:let b = bufnr("%") | tabnew | execute 'buffer' b | *duplicate*

然而,这个问题并不是针对 tabs 或 gVim 的。我可能想在 split 之后复制缓冲区命令或 vert diffsplit命令。 (实际上, vert diffsplit 是我意识到我想要复制缓冲区的第一个实例。)

理想情况下,我还希望尽可能多地保留原始缓冲区和窗口状态,包括光标位置,但原始缓冲区只读状态被忽略并且新缓冲区始终可写。

目前当我遇到这个任务时,我输入 ggyG ,打开或移动到新缓冲区,然后输入 Vp ,但我不仅会丢失新窗口的光标位置,而且我使用的复制命令也需要丢失原始窗口中的位置。该过程肯定可以简化为单个命令。

最佳答案

以下命令序列应该提供一个很好的起点......

  • 在原始缓冲区中:
    :%y
    :let my_view = winsaveview()
    :let my_ft = &filetype
    :new
  • 在新缓冲区中:
    :execute "setf " . my_ft
    :0put
    :call winrestview(my_view)

  • 请注意,您要复制的“状态”不是特定于缓冲区的,而是特定于窗口的。

    关于vim - 如何在 Vim 中复制缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22116144/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com