2015-01-26 132 views
0

使用vim和vim-airline,我有一種情況,我希望能夠關閉緩衝區(如果存在),並且如果不關閉vim。Vim-airline關閉緩衝區/退出vim

因爲速度原因,我首先將:x重新映射到;x

nnoremap : ; 

然後我映射;x關閉與VIM航空公司

nnoremap :x :bp <BAR> bd #<CR> 

打開緩衝區現在的問題是,當我最後關閉所有的緩衝區,我不能用;x退出Vim。

有什麼辦法檢查vim-airline中是否存在緩衝區並關閉它? 看到this post但它更多的是NERDTree。

+1

['nnoremap'是非遞歸](http://stackoverflow.com/q/3776117/78845),並不會調用您的其他映射。 – Johnsyweb 2015-01-26 23:29:01

+0

好的,那是否意味着我的'nnoremap:;'需要更改或緩衝區關閉命令? – mhartington 2015-01-27 00:01:25

回答

1

問題:nnoremap : ;將改變:鍵來調用;命令的原來的值,即跳到由fFtT匹配下一個字符。如果您想使用;x,則需要重新映射相反:nnoremap ; :

nnoremap :x ...將使用:的原始值:x,所以一切都應該正常工作。另外,也可能不太安全,如果您指定了map! x,cmap x,lmap x或它們的非遞歸變體,則可以執行nmap ;x ...以調用:的重新定義值(並且可能重新定義值爲x)。

另外,:bd不會關閉Vim,只有緩衝區和一個窗口。如果你在最後一個緩衝區,你會被轉儲到一個新的未命名的緩衝區(比如:enew)。要關閉緩衝區或Vim,請使用:q,這就是它的用途。 (另外,我不明白你的意思是「vim-airline中存在緩衝區」,Airline是一個狀態欄插件,緩衝區既可以存在也可以不存在,兩者無關,至少不以我明顯的方式)。