当我编程时,Vim是我首选的文本编辑器,因此我总是遇到一个特别烦人的问题。
通常,当我快速需要保存缓冲区并继续执行其他任务时,我通常
:w
但是,我总是(似乎超过50%的时间)设法利用了这一点 :w
。自然,Vim对我大喊,因为这W
是无效的命令:
E492: Not an editor command: W
我的问题是在Vim中如何使用一个别名冒号命令。尤其是,你能举例说明如何别名W
来w
。
我知道将键映射到某些命令的过程,但这不是我想要的。
要保持完成状态不变,请尝试使用
cnoreabbrev W w
它将W
在命令行中替换 为 w
,但前提是该字符既不跟随也不在其前面,因此:W<CR>
将替换为:w<CR>
,但:Write
不会替换。(请注意,这会影响所有匹配的命令,包括您可能不希望看到的命令。例如,该命令:saveas W Z
将替换为:saveas w Z
,因此请谨慎操作。)
这是我怎么会写现在:
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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句