2014-11-16 5 views
46

Vim, похоже, неправильно реагирует на символ штриха в файлах YAML, поэтому нарушая формат.Неправильный отступ при редактировании Yaml в Vim

Например, у меня есть блок, который должен выглядеть следующим образом:

handlers: 
     - name: restart exim4 
      service: name=exim4 state=restarted 

Когда я заканчиваю печатать restart exim4 и типа service: Vim отступ моей окончательного service строки:

handlers: 
     - name: restart exim4 
     service: name=exim4 state=restarted 

Так ясно Vim пытается выровнять предложения column-wise, но это не то, что нужно в YAML. Я хочу создать массив с двумя значениями.

Как это исправить?

ответ

20

Установите этот плагин:

https://github.com/chase/vim-ansible-yaml

Это сделано с анзибль в виду, но в теории он будет работать со всеми видами YAML файлов. Вам придется: установить filetype = ansible, к сожалению, если вы не работаете с файлами, связанными с несвязанным файлом.

+0

Я видел этот плагин - он ожидает, что имя файла будет иметь определенное имя и/или находиться в определенной папке. Невозможные файлы воспроизведения - это не единственные файлы, которые я редактирую. Вот почему я даже не пытался его установить. Спасибо, я установлю yml, чтобы иметь тип «ansible». – Glueon

+0

Вау, имеет большое значение, я думаю, что регулярный синтаксис 'yaml' стоит также исправлять – akostadinov

8

Вы можете отключить отступ при вводе : ключа:

:set indentkeys-=<:> 

Пожалуйста редактировать ~/.vimrc файл и добавьте следующие строки:

filetype plugin indent on 
autocmd FileType yaml setl indentkeys-=<:> 

Примечание:autocmd приходит после filetype.


Вы можете вызвать отступ, набрав CTRL-F в режиме ВСТАВИТЬ, например:

hello: world 
    foo: bar<C-F> 
44

Для того, чтобы получить хороший 2-пространство YAML по умолчанию, когда я после того, как толстая кишка, я добавил это к моему :

autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab 

Это также хорошо сочетается с тире для ожидаемого результата OP.

+1

Спасибо, он выполняет эту работу. – reversiblean

Смежные вопросы