0

我正在将 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

但是,它们似乎不起作用。我是否需要转义某些字符或其他东西?单独在文件中运行它们也不起作用。

4

2 回答 2

2

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

您已经安装了这些自动命令来触发FileTypefiletype 的事件c

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

如果c您的 C 文件无法识别文件类型,那么您可能缺少该行

filetype plugin indent on

在你的 vimrc 中。

你应该使用非递归命令inoreabbrev而不是iabbrev.

于 2013-08-30T17:26:10.860 回答
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>。还要注意,您必须编辑 ac 文件才能使它们工作,因为您只为 c 文件定义了它们。

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

:verbose iabbrev iff
于 2013-08-30T17:27:18.943 回答