":ab" 映射将如何以及何时被触发?

How and when would the ":ab" mapping be triggered?

ab 命令族(iabcab)可以节省大量时间。但是,目前尚不清楚它何时会被触发。例如,在 _vimrc 中使用以下设置:

iab sj <c-r>=strftime("20%y-%m-%d %H:%M:%S")<cr>
cab cab drop C:\users\llinfeng\dropbox

对于ci为"mode-indicator",如果在Insert模式下按下<space>(或<ESC>, <C-[>) 在输入 sj 之后。对于第二个映射,如果在键入 drop.

后立即点击 \(或 <space>),则完整目录将以 Command-line 模式插入

因此,对于iab,似乎以下字符将触发通过iab-映射定义的缩写的扩展:

  1. <space>
  2. <esc>(或一般转义)
  3. 理想情况下,人们可能会猜测 <tab> 键也应该触发这样的扩展。但是,对于我的情况(set expandtab tabstop=4 shiftwidth=4,即一个 "tab" 键 == 4 个空格"),不会触发扩展。

然后,对于 cab,以下可能会触发扩展:

  1. \
  2. <space>
  3. ??

令我困惑的是:触发通过 ab-映射定义的缩写词扩展的 "laying at the core" 是什么东西?并且,对于 Insert 模式和 Command-line 模式,是否存在可以触发此类扩展的完整键列表?

谢谢!

祝一切顺利,

-临风

vimdocs 中对此进行了详尽的记录:

具体来说:

An abbreviation is only recognized when you type a non-keyword character. This can also be the <Esc> that ends insert mode or the <CR> that ends a command. The non-keyword character which ends the abbreviation is inserted after the expanded abbreviation. An exception to this is the character <C-]>, which is used to expand an abbreviation without inserting any extra characters.

但它继续了好几段,准确地详细说明了哪些条件会触发不同类型的缩写。特别注意

之间的区别
  • 完整 ID(foog3-1
  • 结束 ID (#i, ..f, $/7)
  • 非 id(def#4/7$

缩写