我的vimrc中的Vim iabbrev不起作用

时间:2013-08-30 17:09:15

标签: vim

我在autocmds中添加缩写到我的vimrc。它们如下:

augroup caucmds
    autocmd!
    autocmd FileType c :iabbrev iff if ()<left>
    autocmd FileType c :iabbrev elseif else if ()<left>
    autocmd FileType c :iabbrev whilee while ()<left>
    autocmd FileType c :iabbrev elsee else ()<left>
    autocmd FileType c :iabbrev forr for ()<left>
augroup END

然而它们似乎不起作用。我是否需要逃避某些角色或某事?在文件中自行运行它们也不起作用。

2 个答案:

答案 0 :(得分:2)

它应该有效,有或没有冒号(它们在这里是多余的)。

您已安装这些自动命令以触发文件类型FileType的{​​{1}}事件。

因此,当您打开任何C文件时,您可以键入ciff<Space>iff<Tab>iff<Enter>来触发缩写并插入扩展名。请注意,缩写仅在您以某种方式指示其结束后触发。

如果您的C文件无法识别文件类型iff<Esc>,那么您可能错过了该行

c
在你的vimrc中

您应该使用非递归命令filetype plugin indent on 而不是inoreabbrev

答案 1 :(得分:2)

他们对我很有用。但是您应该使用该缓冲区本地的缩写(对于依赖于文件类型的所有内容,您应该这样做)。所以,他们的结果是:

augroup caucmds
    autocmd!
    autocmd FileType c :iabbrev <buffer> iff if ()<left>
    autocmd FileType c :iabbrev <buffer> elseif else if ()<left>
    autocmd FileType c :iabbrev <buffer> whilee while ()<left>
    autocmd FileType c :iabbrev <buffer> elsee else ()<left>
    autocmd FileType c :iabbrev <buffer> forr for ()<left>
augroup END

我试过了,这对我有用。请注意,在按非关键字后,才会触发缩写。例如,对于iff,您必须输入iff<space>。另请注意,您必须编辑c文件才能使用它们,因为您只为c文件定义了它们。

如果它仍然不起作用,那么也许你有一些冲突。试试看这个缩写的最后设置是谁:

:verbose iabbrev iff