vim改变:x函数删除缓冲区而不是保存并退出

我想在vim gui-mode中设置:xdelete buffer因为我总是杀死整个gvim,这很烦人。 我知道我可以专门设置gui问题, if has("gui running")但不知道如何重新映射:x

提前致谢

ps .:也许标签/术语remap是错误的,但我不知道正确的术语,这就是为什么谷歌没有提供任何帮助。

我发现最安全的select是使用expression式缩写:

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

这将确保缩写将只扩展到bd:x否则使用:x只是扩展到x

获得更多帮助:

 :h map-<expr> :h getcmdtype() :h getcmdline() 

经过进一步的检查,哈里·克里希纳·达拉(Hari Krishna Dara)为此命名为cmdalias.vim 。 它使用了上述技术的变体。

这不像看起来那么简单。 :map不能使用命令和:command只接受以大写字母开头的命令。 但是你可以使用:cabbrev

 if has("gui_running") cabbrev x bd endif 

更新:: :cmap实际上可以被使用:: :cmap x bd ,但是它不能正常工作:在一个命令中x每次出现立即被bdreplace。

编辑:这个问题是重复的我可以(重新)在VIM地图Ex命令? 。