如何在Vim中为命令创建别名?

肖恩

当我编程时,Vim是我首选的文本编辑器,因此我总是遇到一个特别烦人的问题。

通常,当我快速需要保存缓冲区并继续执行其他任务时,我通常

:w

但是,我总是(似乎超过50%的时间)设法利用了这一点 :w自然,Vim对我大喊,因为这W是无效的命令:

E492: Not an editor command: W

我的问题是在Vim中如何使用一个别名冒号命令尤其是,你能举例说明如何别名Ww

我知道将键映射到某些命令的过程,但这不是我想要的。

合勤

要保持完成状态不变,请尝试使用

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章