Vim 是我编程时首选的文本编辑器,因此我总是遇到一个特别烦人的问题。
通常,当我快速需要保存缓冲区并继续执行其他杂项任务时,我会执行典型的操作
:w
然而,我总是——似乎超过 50% 的时间——设法利用这一点:w
。很自然地,Vim 对我大喊大叫,因为W
是无效命令:
E492: Not an editor command: W
我的问题是如何Vim 中的别名冒号命令。特别是,您能否举例说明如何别名W
to w
.
我知道这个过程map keys对某些commands,但这不是我要找的。
要保持完成不变,请尝试使用
cnoreabbrev W w
它将取代W
在命令行中w
,但前提是它后面或前面都没有单词字符,所以:W<CR>
将被替换为:w<CR>
, but :Write
惯于。 (请注意,这会影响任何匹配的命令,包括您可能不期望的命令。例如,命令:saveas W Z
将被替换为:saveas w Z
,所以要小心这一点。)
Update
这是我的写法now:
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")
这会检查命令类型是否为:
命令是W
,所以它比仅仅更安全cnoreabbrev W w
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)