vim中的多个自动命令
我在.vimrc
中有一些部分,看起来像这样:
autocmd Filetype ruby setlocal ts=2 autocmd Filetype ruby setlocal sts=2 autocmd Filetype ruby setlocal sw=2
现在看来我可以将它们转换为:
autocmd Filetype ruby setlocal ts=2 sts=2 sw=2
但是这里是我的问题:是否有一种vim的方式来有这样的结构?
<something mentioning Filetype ruby> setlocal ts=2 setlocal sts=2 ... <end>
也就是说, autocmd Filetype
位可以以某种方式解决一组操作? (这是一个简单的例子,我真的要求更复杂的情况。)
你可以调用一个函数,如果你喜欢:
autocmd Filetype ruby call SetRubyOptions() function SetRubyOptions() setlocal ts=2 ... endfunction
你可以链接大多数命令|
:
au Filetype ruby \ setlocal ts=2 | \ setlocal sts=2 | \ ...
不知道这个语法比编写函数更好还是更差。 有些命令不能像这样链接,但你可以使用execute
来解决这个问题。 看:h :bar
。
另请参阅:h line-continuation
用于在行开始处使用\
的奇怪语法的解释。
ftplugins是你的问题的简洁的答案。
- 确保你的
.vimrc
有一行,比如:filetype plugin on
- 定义名为
{rtp}/ftplugin/{thefiletype}.vim
或{rtp}/ftplugin/{thefiletype}/whatever.vim
(更多详细信息,请参阅:h rtp
)。 - 编辑这个新文件,并把你的VIM命令在那里。 使用
:setlocal
命令可能是一个好主意,以确保文件types特定的设置仅适用于该文件(例如,不要在所有文件types中closures所有注释)。
如果您打算覆盖默认设置,请参阅vim分发中的示例; 或者在我写的许多ftplugins中 ),只要写下你的:setlocal
, :*map <buffer>
等定义。
它代表了更多的行types,但至less,它确实规模。