2011-08-15 37 views

回答

3

我使用以下方法來告訴我們,如果和quickfix窗口是僅存的,如果所以沒有及時退出。

if winbufnr(2) == -1 
    quit! 
endif 

這是我從我的.vimrc整個代碼:

autocmd BufEnter * call MyLastWindow() 

function! MyLastWindow() 
    if &buftype=="quickfix" 
     " if this window is last on screen quit without warning 
     if winbufnr(2) == -1 
     quit! 
     endif 
    endif 
endfunction 

你可以修改它以簡單地做一個接近如果它不是最後一個窗口,並做了不幹!如果是。顯然是從你的映射中調用它而不是從autocmd中調用它。

4

感謝爲什麼不使用:

nmap: <ESC><ESC> :quit<CR> 
1

它總是令我驚訝的是,沒有找到這種信息的本地方式。我有一個使用windo命令粗略地計算其返回打開的窗口數的函數:

fun! NumWindows() 
    let num_wins = 0 
    windo let num_wins += 1 
    return num_wins 
endfun 

所以,你已經達到了當最後一個窗口NumWindows() == 1

(我想我可能已經被盜從另一個線程的windo想法,但我怕我不記得是哪。)

+0

試想想,我們可以搜索整個Vim的幫助系統關鍵字,說也許「緩衝計數」? – osager

+0

您可以使用':helpgrep {pattern}',然後使用':cnext'跳過結果,但是您通常必須知道要查找的內容。 –

+0

你確定沒有找到這些信息的本地方法嗎?我會等待一段時間,然後再將您的答案設置爲正確。 – osager

0

我看到它已在評論中提及,但這應該作爲回答提出:winnr('$')。從:help winnr()

結果是一個數字,它是當前窗口的編號。頂部窗口的編號爲1.當可選參數爲「$」時,返回最後一個窗口的編號(窗口計數)。

所以,你可以做,

if winnr('$') == 1 
    " only one window 
endif 
相關問題