在不更改备用文件的情况下打开缓冲区



很多时候我喜欢在备选文件之间来回切换。

如果我需要看另一个文件,只是一秒钟,然后回到我原来的地方,失去我正在切换的备用文件是令人沮丧的。

无论如何不覆盖备用文件的快速一次性缓冲区编辑?

您应该更好地使用Control-iControl-o映射在文件之间的位置之间移动。这样你可以很容易地回到你以前的文件。

虽然要实际回答您的问题,由于备用文件存储在#寄存器中,我猜您可以创建一个映射,将#复制到临时寄存器中,打开文件并将保存的寄存器恢复到#。理论上应该是这样的:

:let @x=@#|edit file|let @#=@x

但是由于某种原因你不能写入@#寄存器

虽然在alternate-file的帮助下,建议使用:keepalt命令不使用作为参数给出的命令覆盖备用文件寄存器:

:keepalt {cmd}              Execute {cmd} while keeping the current alternate file
                            name.  Note that commands invoked indirectly (e.g.,
                            with a function) may still set the alternate file
                            name.  {not in Vi}

这是使用分割的绝佳机会。一个正常的分割,:sp,或预览窗口通过:pedit作为@RandyMorris建议。

如果你正在使用标签,你可以使用<c-w><c-]>在新窗口中打开标签,或者使用<c-w>}在预览窗口中打开标签。

如果你决定使用预览窗口,你可以使用<c-w>P直接进入预览窗口,<c-w>z关闭预览窗口。

或者,如果您想保留备选缓冲区,您可以使用:keepalt命令。例如

:keepalt e foo.c

然而,我觉得这并不能真正解决你的问题。假设您正在查看文件A和备选文件b,您使用:keepalt e C。现在你在缓冲区C上,所有缓冲区为b。你必须点击<c-o>(可能几次)才能返回文件a。这对我来说有点笨拙。

我可能应该注意到,有一次我真的很喜欢使用:keepalt命令,那就是:read。例::keepa r foo.c .

如果你打算经常在文件之间跳转,我真的建议你看看大写标记、标签/cscope和你的分割命令。如果你的项目结构良好,你可以使用像projectionist这样的东西,或者使用像a.v vim这样的东西在。h和。c文件之间切换。

更多帮助参见:

:h :sp
:h :pedit
:h window-tag
:h :keepa
:h 'A

相关内容

最新更新