4

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

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

4

2 回答 2

8

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

如果您不喜欢它,没有什么能阻止您创建正常模式映射:

nnoremap <leader>a :Ack<Space>

这甚至比:ack<Space>.

于 2013-05-29T19:11:42.943 回答
3

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

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

长话短说 vim 不提供创建小写命令的本地方式。使用映射会导致延迟,因此首选缩写。诀窍是当缩写应该扩展为 ' 时要小心,cabbrev而不仅仅是 ex 命令和其他地方,例如搜索。这是另一个讨论这一点的线程。

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

于 2013-05-29T19:11:59.130 回答