Vim中iab映射的奇怪行为

时间:2015-04-06 13:29:28

标签: vim vim-plugin

我想使用iab映射将时间标记插入到我的Tex文档中。 (这样我就可以知道在将笔记转换为tex文件时在哪里查找笔记。)

我尝试在c:\vim\vimfiles\ftplugin\tex.vim中定义以下内容:

" iab mapping for inserting time stamps.
iab <buffer> sj % <c-r>=strftime("20%y-%m-%d %H:%M:%S")<cr><ESC>o

但是,在插入模式下按sj<space>会给我以下内容:

% 2015-04-06 09:23:48

i  sj            2015-04-06 09:23:48 

只有按sj<CR>才会插入所需的输出:

% 2015-04-06 09:27:57
<blank line>
<cursor here, in insert mode>

有没有人知道为什么应该插入suth i sj 2015-04-06 09:23:48?我怎么能阻止它?

一切顺利,

-Linfeng

1 个答案:

答案 0 :(得分:2)

您提到您在c:\vim\vimfiles\ftplugin\tex.vim中定义了缩写,它似乎位于Vim的安装路径中。您可能应该在用户目录中定义它,以避免在更新时丢失这些更改;这在Vim FAQ 26.1解释。

您的缩写在这里工作正常。您的缩写可能是触发您设置的另一个缩写;您可以将iab替换为inorea来避免这种情况。您还可以使用:iab列出所有现有缩写,并使用:imap插入模式映射,以检查哪一个可能会干扰。