我在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
然而它们似乎不起作用。我是否需要逃避某些角色或某事?在文件中自行运行它们也不起作用。
答案 0 :(得分:2)
它应该有效,有或没有冒号(它们在这里是多余的)。
您已安装这些自动命令以触发文件类型FileType
的{{1}}事件。
因此,当您打开任何C文件时,您可以键入c
或iff<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