重新映射vim:x以关闭缓冲区,仅当它是最后一个缓冲区时才退出
我想更改Vim中的:x命令,以便它关闭一个缓冲区,除非它是最后一个缓冲区,否则它应该像现在一样工作(即关闭Vim) 我读过一些东西,但不是一路读下去的。我也使用NERDTree,希望在考虑它是否是最后一个缓冲区时忽略它 我有一个基于我提到的链接的部分工作解决方案,但这使得无法使用vim命令退出vim(因为退出命令已重新映射) 我有重新映射vim:x以关闭缓冲区,仅当它是最后一个缓冲区时才退出,vim,Vim,我想更改Vim中的:x命令,以便它关闭一个缓冲区,除非它是最后一个缓冲区,否则它应该像现在一样工作(即关闭Vim) 我读过一些东西,但不是一路读下去的。我也使用NERDTree,希望在考虑它是否是最后一个缓冲区时忽略它 我有一个基于我提到的链接的部分工作解决方案,但这使得无法使用vim命令退出vim(因为退出命令已重新映射) 我有 cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'w&
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'
cnoreabrev x getcmdtype()==”:“&&getcmdline()=='x'?'wbd':'x'
cnoreabbrev wq getcmdtype()==”:“&&getcmdline()=='wq'?'wbd':'wq'
cnoreabbrev q getcmdtype()==”:“&&getcmdline()=='q'?'bd':'q'
因此:x(或:wq)将保存并关闭当前缓冲区,而:q将仅关闭它
我想补充的是。。。如果该缓冲区也是最后一个缓冲区(忽略NERDTree),则它也将退出vim
这可能吗?来自works的回答:
您是否尝试过用
:q
代替:x
?它可以做你想做的事情,但在退出时不保存(你可以使用:wq
):q不关闭缓冲区,它只是隐藏它。很抱歉,我没有完全阅读这个问题。仅供参考,你可以简单地使用:bd
关闭当前缓冲区。我知道。但是经过20年的打字:x,旧习惯很难改掉;)
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif