Vim是我的首选文本编辑器,当我编程,因此我总是遇到一个特别恼人的问题。
经常,当我快速需要保存缓冲区并继续一些其他杂项任务,我做典型
:w
然而,我 – 似乎是超过50%的时间 – 总是设法利用这一点:w。当然,vim喊我,因为W是一个无效的命令
E492: Not an editor command: W
我的问题是如何可以一个别名冒号命令在vim。特别是,你能举例说明如何别名W到W。
我知道将密钥映射到某些命令的过程。不幸的是,这不是我要找的。
要使完成保持不变,请尝试使用
cnoreabbrev W w
,它将用w替换命令行中的W,但是只有当它既不跟随也不在字符字符之前,则:W< CR>将被替换为:w< CR> ;,但是:不会写。 更新 这里是我现在写的:
cnoreabbrev <expr> W ((getcmdtype() is# ':' && getcmdline() is# 'W')?('w'):('W'))
作为功能:
fun! SetupCommandAlias(from,to) exec 'cnoreabbrev <expr> '.a:from \ .' ((getcmdtype() is# ":" && getcmdline() is# "'.a:from.'")' \ .'? ("'.a:to.'") : ("'.a:from.'"))' endfun call SetupCommandAlias("W","w")