Ответ 1
Вы можете вызвать функцию, если хотите:
autocmd Filetype ruby call SetRubyOptions()
function SetRubyOptions()
setlocal ts=2
...
endfunction
У меня есть некоторые разделы в моем .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
).:setlocal
, чтобы гарантировать, что параметры, специфичные для файла, предназначены только для этого файла (например, не включайте все фиолетовые фишки во всех типах файлов).См. примеры в дистрибутиве vim, если вы планируете переопределять настройки по умолчанию; или в многие ftplugins, которые я написал, в противном случае) просто напишите свои определения :setlocal
, :*map <buffer>
и т.д.
Он представляет собой еще одну строку для ввода, но, по крайней мере, она масштабируется.