繁体   English   中英

是否可以在Vim中重新映射Ex命令(将:Ack映射到:ack)?

[英]Is it possible to remap an Ex command in Vim (remap :Ack to :ack)?

我使用了Vim插件ack.vim ,但是我不明白为什么命令是:Ack带有大写的“ A”(有点讨厌按住shift )。

是否可以将其重新映射到:ack

内置命令以小写字母开头,自定义命令以大写字母开头。 这些是规则。 Vim根本不允许您定义以小写字母开头的自定义命令。

如果您不喜欢它,则不会阻止您创建普通模式映射:

nnoremap <leader>a :Ack<Space>

它甚至比:ack<Space>还要快。

是的,但这并不像听起来那么简单:

cnoreabbrev <expr> ack getcmdtype() == ':' && getcmdline() ==# 'ack' ? 'Ack' : 'ack'

长话短说vim没有提供创建小写命令的本地方法。 使用映射会导致延迟,因此最好使用缩写。 诀窍是在缩写应随cabbrev的扩展而不是ex命令和其他位置(例如搜索)扩展时要小心。 这是谈论这一点的另一个话题

Hari Krishna Dara创建了一个插件: cmdalias.vim 它使用了上面技术的一种变体

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM