2009-02-19 230 views
2

當我錯誤地嘗試切換最後一個緩衝區[n:]時,我正在丟失所有以前的緩衝區。vi,vim緩衝區溢出

舉例來說,如果我在編輯器中打開文件的情侶

: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

我覺得你在那裏搞混了。緩衝區就像一個打開的文件。當您使用切換到參數列表中的下一個文件時:n您關閉當前緩衝區並打開下一個文件,因此這些更改必須保存或丟棄。

此外,如果您嘗試超出參數列表中的最後一個文件,vim的默認行爲是顯示錯誤消息,因此在vim中丟失任何內容都不是很容易。

也許描述你的行爲(按鍵)可以在這裏幫助,如果這不能回答你的問題。

[編輯]

好了,現在我知道是什麼問題:有編輯您在啓動VIM時提供緩衝和文件列表之間的差異。如果你啓動vim與

vim a.txt b.txt 

有2個文件可以編輯。這並不意味着,有多個緩衝區。您可以使用:n和:p(表示n(ext)文件和p(上一個文件))導航。如果您有全局標誌:隱藏集,這意味着您關閉的每個緩衝區都將變爲隱藏緩衝區。該文件仍在編輯中,但不會顯示在任何窗口中。這個值可能是在系統啓動vim時設置的。嘗試添加:SE nohidden到你的.vimrc和嘗試以下操作:

:help buffer-hidden 

[/編輯]

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爲列出緩衝區並用數字鍵選擇一個。

2
:bn 

將顯示在緩衝液中的Ñ EXT文件(你的情況 「的/ etc /模量」)

:bp 

將在您的緩衝顯示p revious文件(也稱爲「/etc/moduli「,因爲它做了排列)

有一點你會注意到,你正在編輯的文件被標記爲

%a 

# 

意味着它是你顯示的最後一個文件。 希望它可以幫助你。