2

当我错误地试图切换到最后一个缓冲区 [n:] 后面时,我丢失了所有以前的缓冲区。

例如,如果我在编辑器中打开几个文件

:ls
  1 #    "/etc/moduli"                  line 1
  2 %a   "/etc/motd"                    line 1

:n
E163: There is only one file to edit

:p
E163: There is only one file to edit

now i can navigate between tabs just using :b [number]

请建议如何解决此问题。在这种情况下,如何防止缓冲区关闭?

4

3 回答 3

4

我认为你在那里混淆了一些东西。缓冲区类似于打开的文件。当您使用:n切换到参数列表中的下一个文件时,您将关闭当前缓冲区并打开下一个缓冲区,因此此时必须保存或丢弃更改。

此外,如果您尝试超出参数列表中的最后一个文件,vim 的默认行为是显示错误消息,因此在 vim 中丢失任何内容都不是很容易。

如果这不能回答您的问题,也许在这里描述您的行为(按键)可能会有所帮助。

[编辑]

好的,现在我知道问题出在哪里了:缓冲区和您在启动 vim 时提供的要编辑的文件列表之间存在差异。如果你开始 vim

vim a.txt b.txt

有 2 个文件要编辑。这并不意味着有多个缓冲区。您可以使用 :n 和 :p 导航(意思是 n(ext) 文件和 p(revious) 文件)。如果您设置了全局标志 :hidden,这意味着您关闭的每个缓冲区都将成为隐藏缓冲区。该文件仍在编辑中,但未显示在任何窗口中。该值可能是在系统中启动 vim 时设置的。尝试将:se nohidden添加到您的 .vimrc 并尝试以下操作:

:help buffer-hidden

[/编辑]

于 2009-02-19T12:54:50.853 回答
2

:n 和 :p 不在缓冲区之间切换:)

试试 :bufnext 和 :bufprev

也许你会喜欢:

nmap <LEADER>k :bnext<CR>:redraw<CR>
nmap <LEADER>j :bprevious<CR>:redraw<CR>
nmap <LEADER>d :bd<CR>
nnoremap <LEADER>b :buffers<CR>:buffer<space>

按 ,j 为上一个缓冲区,按 ,k 为下一个缓冲区,按 ,d 关闭当前缓冲区,按 ,b 列出您的缓冲区并用数字键选择一个。

于 2009-02-19T16:48:50.177 回答
2
:bn

将在您的缓冲区中显示下一个ext文件(在您的情况下为“/etc/moduli”)

:bp

将在您的缓冲区中显示上一个文件(也是“/etc/ moduli ”,因为它会进行排列)

您会注意到的一件事是您正在编辑的文件标有

%a

然而

#

表示这是您显示的最后一个文件。希望它可以帮助你。

于 2009-02-19T18:46:52.410 回答