是否可以将vim会话中的备用缓冲区重置为以前的状态?
通过备用缓冲区,我指的是#引用的缓冲区,即输入cntl时显示的那个 - ^。
说我有两个文件打开main.c和other.c并且:ls给了我:
1 %a "main.c" lines 27
2 # "other.c" lines 56
说我打开另一个文件,例如refer.c,:ls现在会给我:
1 %a "main.c" lines 27
2 "other.c" lines 56
3 # "refer.c" lines 125
如果删除包含refer.c的缓冲区,则:ls现在显示:
1 %a "main.c" lines 27
2 "other.c" lines 56
但如果我做了一个cntl- ^,将再次显示refer.c!
有没有办法让vim将备用缓冲区重置为最后一次自动恢复?备用缓冲区的“历史”?
还是我坚持做一个:2 b将other.c重新加载到备用缓冲区?
或许这种行为有充分的理由?
答案 0 :(得分:7)
在这种情况下,“alternate”仅表示“previous”。所以,是的,:b2(或2 ctrl-6)可能是改变ctrl-6切换哪两个缓冲区的最简单方法。
另外,请看一下:keepalt命令。
答案 1 :(得分:1)
您将对Vim有所期待,这是一个很好的原因。 -i.bak
(用于缓冲区删除的助记符)不会不删除缓冲区,就其本身而言,它会从主缓冲区列表中删除!
如果您尝试使用.bak
或:bd
,则会看到它仍然可用,但其缓冲区编号旁边有一个:ls!
,表示它现在是“未列出”(即,除非您使用感叹号将其列出!)
我正在使声音听起来越恐怖,但是就像大多数Vim一样,一旦您理解它就可以使用,并且使用感叹号/ bang强制执行命令是一致的。
要完全摆脱缓冲区,您需要使用:buffers!
擦除。完成此操作后,您仍然会遇到同样的问题,但是这次,尝试使用u
切换到备用缓冲区会引起:bw
(因为这次 really 已经消失了。)
是的,要切换到所需文件,请使用缓冲区号CTRL-^
,或所需文件的任何缓冲区号,这将建立一个新的备用缓冲区。
我发现很容易记住缓冲区编号或非常快速地用No alternate file
或:b2
查找缓冲区编号,当然,很快就可以更改它们,但是Vim中有很多技巧用于更改缓冲区,尤其是包括 mark 的缓冲区。
您还在这里发现了另一个很棒的Vim功能,即未列出的缓冲区。当您处理一些额外的文件时,使用:buffers
从:buffers!
列表中“删除”它们有时会很有帮助,只是使它们不可见,但尽管隐藏了它们并非不可用,然后您可以先使用:buffers
并选择:bd
来将其拉出,而不必取消删除它或任何其他操作。