Vim中的缓冲区复位
是否可以将vim会话中的备用缓冲区重置为以前的状态 所谓备用缓冲区,我指的是#所指的缓冲区,即输入cntl-^时显示的缓冲区 假设我打开了两个文件main.c和other.c,ls给了我:Vim中的缓冲区复位,vim,buffer,keyboard-shortcuts,Vim,Buffer,Keyboard Shortcuts,是否可以将vim会话中的备用缓冲区重置为以前的状态 所谓备用缓冲区,我指的是#所指的缓冲区,即输入cntl-^时显示的缓冲区 假设我打开了两个文件main.c和other.c,ls给了我: 1 %a "main.c" lines 27 2 # "other.c" lines 56 假设我打开另一个文件,例如reference.c,:ls现在将为我提供: 1 %a "main.c" lines
1 %a "main.c" lines 27
2 # "other.c" lines 56
假设我打开另一个文件,例如reference.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-^,则会再次显示reference.c
有没有办法让vim自动将备用缓冲区重置回上次的状态?备用缓冲区的“历史记录”
还是我必须执行a:2b将其他.c重新加载到备用缓冲区
或者这种行为有很好的理由?在这种情况下,“alternate”只是指“previous”。因此,是的,:b2(或2 ctrl-6)可能是更改通过ctrl-6切换哪两个缓冲区的最简单方法
另外,看看:keepalt命令。正如您对Vim所期望的那样,这种行为有一个很好的理由<代码>:bd(用于缓冲区删除的助记符)本身不会删除缓冲区,而是将其从主缓冲区列表中删除 如果您尝试
:ls代码>或:缓冲区
您将看到它仍然可用,但其缓冲区编号旁边有一个u
,表示它现在“未列出”(即,未列出,除非用感叹号列出!)
我尽可能让它听起来很恐怖,但与大多数Vim一样,一旦您理解它,它就会工作,并且使用感叹号/bang强制命令是一致的
要完全清除缓冲区,需要使用:bw
擦除它。当您这样做时,您仍然会遇到同样的问题,但是这次,尝试使用CTRL-^
切换到备用缓冲区将导致没有备用文件(因为这次它确实已经消失了)
要切换到您想要的文件,可以使用缓冲区编号::b2
,或者您想要的文件的任何缓冲区编号,这将建立一个新的备用缓冲区
我发现很容易记住缓冲区编号或使用:buffers
或:buffers查找它们代码>非常快,当然更改为它们也很快,但是当然在Vim中有一系列用于更改缓冲区的技术,特别是包括标记
您还发现了另一个很棒的Vim特性,未列出的缓冲区。当您处理一些额外的文件时,有时使用:bd
从:buffers
列表中“删除”它们会很有帮助,只是为了让它们看不见,但是尽管隐藏了,它们却不可用,您可以使用:buffers>检查您想要的文件
然后:b
将其拉出,而无需取消删除或其他任何操作。我没有答案,但我不知道ctrl-^。生产力++,谢谢!很高兴看到你还活着,@RobWells!我想你现在已经知道这一点了,考虑到自从你最初提出这个问题以来,你已经使用Vim多久了!