我正在尝试创建一个缩写,用我想要的替换打字文本,但也移动光标并进入插入模式。
ab如下:
:abbreviate MSG `MSG(("")); <Esc>F"i
一切正常,除非进入插入模式,我必须在光标前添加额外的空格。
我已经尝试添加<BS><BS>
但它会导致删除第一个引用。同样的事情,如果我只放一个<BS>
(这真的很奇怪,似乎第二个<BS>
根本没有效果......)
我想我错过了什么,但我无法弄清楚是什么......
感谢您的帮助!
答案 0 :(得分:2)
来自Vim帮助系统(:help abbreviations
)的引文:
只有在键入非关键字时才会识别缩写 字符。这也可以是结束插入模式的
<Esc>
结束命令的<CR>
。结束的非关键字字符 缩写在扩展缩写后插入。一个 例外情况是字符<C-]>
,用于展开 缩写而不插入任何额外的字符。示例:
:ab hh hello "hh<Space>" is expanded to "hello<Space>" "hh<C-]>" is expanded to "hello"
因此,如果您在输入<Space>
后按MSG
,则在扩展缩写后插入空格。
为了避免添加不必要的空间,您可以在输入<C-]>
后按MSG
来调用缩写,或者您可以尝试详细说明这样的映射:
:inoremap MSG `MSG(("")); <C-O>F"
但恕我直言这样的映射非常不方便。
另一种选择可能是使用许多缩写插件之一,如this(首先由Google展示)。