Vim 中 iab 映射的奇怪行为
Weird behavior for iab mapping in Vim
我想使用 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
吗?我该如何阻止它?
祝一切顺利,
-临风
你提到你在c:\vim\vimfiles\ftplugin\tex.vim
中定义了缩写,它似乎在Vim的安装路径中。您可能应该在用户目录中定义它,以避免在更新时丢失这些更改; Vim FAQ 26.1.
对此进行了解释
你的缩写在这里工作得很好。您的缩写可能会触发您设置的另一个缩写;您可以通过将 iab
替换为 inorea
来避免它。您还可以使用 :iab
列出所有现有缩写并使用 :imap
插入模式映射,以检查哪个可能会干扰。
我想使用 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
吗?我该如何阻止它?
祝一切顺利,
-临风
你提到你在c:\vim\vimfiles\ftplugin\tex.vim
中定义了缩写,它似乎在Vim的安装路径中。您可能应该在用户目录中定义它,以避免在更新时丢失这些更改; Vim FAQ 26.1.
你的缩写在这里工作得很好。您的缩写可能会触发您设置的另一个缩写;您可以通过将 iab
替换为 inorea
来避免它。您还可以使用 :iab
列出所有现有缩写并使用 :imap
插入模式映射,以检查哪个可能会干扰。