很多时候我喜欢在备选文件之间来回切换。
如果我需要看另一个文件,只是一秒钟,然后回到我原来的地方,失去我正在切换的备用文件是令人沮丧的。
无论如何不覆盖备用文件的快速一次性缓冲区编辑?
您应该更好地使用Control-i和Control-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