我想要更改Vim中的:x命令,使其在关闭缓冲区时,如果它不是最后一个缓冲区,则表现为关闭缓冲区,否则表现为关闭vim(即与现在相同)。
我已经在这里阅读了一些内容,但还没有完全解决问题。我还使用NERDTree,并希望在考虑最后一个缓冲区时忽略它。
我有一个部分工作的解决方案,基于我所提到的链接,但这使得使用vim命令退出vim变得不可能(因为退出命令已被重新映射)。
我有:
我已经在这里阅读了一些内容,但还没有完全解决问题。我还使用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(或者:wq)将保存并关闭当前缓冲区,而:q则只会关闭它。
我想要补充的是……如果该缓冲区也是最后一个缓冲区(忽略NERDTree),那么它也将退出vim。
这个可行吗?
:q
代替:x
吗?它基本上可以实现你想要的功能,但退出时不会保存(你可以使用:wq
强制保存)。 - Prince Goulash:bd
命令关闭当前缓冲区。 - ThiefMaster