我经常喜欢在备用文件之间来回切换。
如果我需要查看另一个文件只需一秒钟然后回到原来的位置,那么丢失备用文件就很令我感到沮丧。我正在切换。
无论如何不要覆盖备用文件以进行快速的一次性缓冲编辑?
答案 0 :(得分:5)
你应该更好地使用 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}
答案 1 :(得分:3)
这是使用拆分的绝佳机会。正如@RandyMorris建议的那样,通过:sp
进行正常拆分,:pedit
或预览窗口。
如果您使用的是ctags,则可以使用<c-w><c-]>
在新窗口中打开标记,或<c-w>}
在预览窗口中打开标记。
如果您决定使用预览窗口,可以使用<c-w>P
直接转到预览窗口,然后<c-w>z
关闭预览窗口。
或者,如果要保留备用缓冲区,可以使用:keepalt
命令。 e.g。
:keepalt e foo.c
然而,我觉得这并没有真正解决你的问题。假设您正在使用替代文件B查看文件A.您使用:keepalt e C
。现在你在缓冲区C上有一个alt缓冲区B.你必须点击<c-o>
(可能几次)才能回到文件A.这对我来说有点麻烦。
我应该值得注意的是,有一次我真的想使用:keepalt
命令,而:read
命令就是这样。例如:keepa r foo.c
。
如果您打算经常在文件之间跳转,我建议您查看大写标记,ctags / cscope和split命令。如果您的项目结构合理,您可以使用projectionist或使用something like a.vim来切换.h和.c文件。
如需更多帮助,请参阅:
:h :sp
:h :pedit
:h window-tag
:h :keepa
:h 'A