Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim中的缓冲区复位_Vim_Buffer_Keyboard Shortcuts - Fatal编程技术网

Vim中的缓冲区复位

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

是否可以将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 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多久了!