重新映射vim:x以关闭缓冲区,仅在它是最后一个缓冲区时退出

时间:2012-03-27 09:18:40

标签: vim

我想在Vim中更改 x 命令,以便它关闭缓冲区,除非它是最后一个缓冲区然后它应该像现在一样(即关闭vim)。

我读过一些东西here,但它并没有完全消失。我也使用NERDTree,并且在考虑它是否是最后一个缓冲区时希望忽略它。

我有一个基于我所提到的链接的部分工作解决方案,但这使得无法使用vim命令退出vim(因为退出命令已被重新映射)。

我有

cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'w<bar>bd' : 'x'
cnoreabbrev <expr> wq getcmdtype() == ":" && getcmdline() == 'wq' ? 'w<bar>bd' : 'wq'
cnoreabbrev <expr> q getcmdtype() == ":" && getcmdline() == 'q' ? 'bd' : 'q'

所以 x (或 w q )将保存并且关闭当前缓冲区,然后:q将关闭它。

我想添加的是......如果该缓冲区也是最后一个缓冲区(忽略NERDTree),那么它也将退出vim。

这可能吗?

1 个答案:

答案 0 :(得分:0)

来自Automatically quit vim if NERDTree is last and only buffer的答案:

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
相关问题