我想设置:x
为 vim gui-modedelete buffer
因为我总是杀死整个 gvim,这有点烦人。我知道我可以专门设置 gui 问题if has("gui running")
但不知道如何重新映射:x
提前致谢
ps.:也许标签/术语remap
是错误的,但我不知道正确的术语,这就是谷歌根本没有提供任何帮助的原因。
我发现最安全的替代方法是使用表达式缩写:
cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'bd' : 'x'
这将确保缩写仅在使用bd
时扩展为,: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
.