vim改变:x函数删除缓冲区而不是保存并退出
我想在vim gui-mode中设置:x
来delete 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
每次出现立即被bd
replace。
编辑:这个问题是重复的我可以(重新)在VIM地图Ex命令? 。