【问题标题】:Is it possible to remap an Ex command in Vim (remap :Ack to :ack)?是否可以在 Vim 中重新映射 Ex 命令(重新映射 :Ack 到 :ack)?
【发布时间】:2013-05-25 04:28:54
【问题描述】:

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

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

【问题讨论】:

标签: vim macvim vim-plugin


【解决方案1】:

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

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

nnoremap <leader>a :Ack<Space>

这比:ack&lt;Space&gt; 还要快。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 2012-01-13
      • 1970-01-01
      • 2012-04-03
      • 2014-12-30
      • 2015-05-13
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多