【发布时间】:2013-05-25 04:28:54
【问题描述】:
我使用 Vim 插件 ack.vim,但我不明白为什么命令是 :Ack 带有大写“A”(按住 shift 有点烦人)。
是否可以将其重新映射到:ack?
【问题讨论】:
标签: vim macvim vim-plugin
我使用 Vim 插件 ack.vim,但我不明白为什么命令是 :Ack 带有大写“A”(按住 shift 有点烦人)。
是否可以将其重新映射到:ack?
【问题讨论】:
标签: vim macvim vim-plugin
内置命令以小写字符开头,自定义命令以大写字符开头。这些是规则。 Vim 根本不允许您定义以小写字母开头的自定义命令。
如果您不喜欢它,没有什么能阻止您创建普通模式映射:
nnoremap <leader>a :Ack<Space>
这比:ack<Space> 还要快。
【讨论】:
是的,但它并不像听起来那么简单:
cnoreabbrev <expr> ack getcmdtype() == ':' && getcmdline() ==# 'ack' ? 'Ack' : 'ack'
长话短说 vim 不提供创建小写命令的本地方式。使用映射会导致延迟,因此首选缩写。诀窍是当缩写应该扩展为 cabbrev 的扩展时要小心,而不仅仅是 ex 命令和其他地方,例如搜索。这里是another thread 谈论这一点。
Hari Krishna Dara 创建了一个插件:cmdalias.vim。它使用了上述技术的变体
【讨论】: