vi,vim缓冲区溢出

vi,vim缓冲区溢出,vim,vi,Vim,Vi,当我错误地试图切换到最后一个缓冲区后面时,我丢失了所有以前的缓冲区[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 nav

当我错误地试图切换到最后一个缓冲区后面时,我丢失了所有以前的缓冲区[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]

请建议如何修复此行为。在这种情况下,如何防止缓冲区关闭?

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

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

如果这不能回答您的问题,那么描述您的行为(按键)可能会有所帮助

[编辑]

好的,现在我知道问题是什么了:在启动vim时提供的缓冲区和要编辑的文件列表之间存在差异。如果你用

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

:help buffer-hidden

[/edit]

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

try: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>
nmap k:bnext:redraw
nmap j:B上一个:重新绘制
nmap-d:bd
nnoremap b:缓冲区:缓冲区
按,j表示上一个缓冲区,按k表示下一个缓冲区,按d表示关闭当前缓冲区,按,b表示列出缓冲区并用数字键选择一个

:bn
将在缓冲区中显示next文件(在您的情况下为“/etc/moduli”)

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

您会注意到,您正在编辑的文件被标记为

%a
鉴于

#
表示这是您显示的最后一个文件。 希望对你有帮助

#