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

时间:2013-05-29 19:04:11

标签: vim macvim vim-plugin

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

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

2 个答案:

答案 0 :(得分:8)

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

如果你不喜欢它,没有什么能阻止你创建普通模式映射:

nnoremap <leader>a :Ack<Space>

甚至比:ack<Space>更快。

答案 1 :(得分:3)

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

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

Long story short vim不提供创建小写命令的本机方法。使用映射会导致延迟,因此首选缩写。诀窍是当缩写应该扩展时要小心,因为cabbrev在其他时间扩展而不仅仅是ex命令和其他地方,例如搜索。这是another thread谈论这一点。

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

相关问题