Неправильный отступ при редактировании Yaml в Vim
Кажется, что Vim неправильно реагирует на символ тире в файлах YAML, поэтому нарушая формат.
Например, у меня есть блок, который должен выглядеть так:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Когда я заканчиваю набирать restart exim4
и набираю service:
Vim переопределяет мою окончательную строку service
:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Таким образом, Vim пытается выровнять предложения по столбцам, но это не то, что нужно в YAML. Я хочу создать массив с двумя значениями.
Как это исправить?
Ответы
Ответ 1
Установите этот плагин:
https://github.com/chase/vim-ansible-yaml
Это сделано с Ansible в уме, но в теории оно будет работать со всеми видами файлов YAML. Вам придется: установить filetype = ansible, к сожалению, если вы не работаете с доступными связанными файлами.
Ответ 2
Чтобы получить хороший 2-пространственный YAML в качестве значения по умолчанию, когда я ударил возврат каретки после двоеточия, я добавил это к моему .vimrc
:
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
Это также хорошо сочетается с тире для ожидаемого результата OP.
Ответ 3
Вы можете отключить reindent при вводе ключа :
:
:set indentkeys-=<:>
Измените ~/.vimrc
файл и добавьте следующие строки:
filetype plugin indent on
autocmd FileType yaml setl indentkeys-=<:>
Примечание: autocmd
появляется после filetype
.
Вы можете вызвать reindent, набрав CTRL-F в режиме INSERT, например:
hello: world
foo: bar<C-F>
Ответ 4
Вы можете использовать эту автокоманду, чтобы Vim правильно сделал отступ для YAML файлов (поместите его в ваш .vimrc
):
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0# indentkeys-=<:>
По сути, для файла YAML он указывает Vim:
- Используйте 2 пробела для отступа.
- Используйте пробелы вместо вкладок.
- Пропустить повторный отступ строк после вставки символа комментария (
#
) в начале строки или двоеточия.
Ответ 5
Вы можете добавить комментарий в свой YAML, чтобы сообщить Vim специальную конфигурацию для этого файла. Например:
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:
foo:
bar:
- a
- b
Тогда каждый, кто использует этот файл с vim по умолчанию, может поделиться конфигурацией создателя файла. Это хорошо работает, особенно при сотрудничестве.
Ответ 6
Я нашел https://github.com/stephpy/vim-yaml, чтобы работать отлично. Это плагин vim, который выполняет отступ (и подсветку синтаксиса) файлов yaml. Его установка решает ту проблему, о которой вы тоже спрашивали.
Вам нужно установить плагин (см. Документацию в репозитории GitHub), и пока ваш filetype=yaml
он исправит ваш отступ. Это поможет вам обоим
- во время ввода предоставленного вами фрагмента или
- если у вас уже есть написанное yaml, вы можете выбрать его (с
V
для строчного выбора, затем используйте j
или k
для выбора большего количества строк) и затем запустить форматирование vim с помощью =
Ответ 7
Вот группа, augroup
я имею для yaml:
augroup filetype_yaml
autocmd!
autocmd BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml foldmethod=indent
autocmd FileType yaml |
setlocal shiftwidth=2 |
setlocal softtabstop=2 |
setlocal tabstop=2
augroup END