vim,打开缓冲区而不更改备用文件

时间:2014-05-20 12:36:53

标签: vim

我经常喜欢在备用文件之间来回切换。

如果我需要查看另一个文件只需一秒钟然后回到原来的位置,那么丢失备用文件就很令我感到沮丧。我正在切换。

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

2 个答案:

答案 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