Кажется, что 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. Я хочу создать массив с двумя значениями.
Как это исправить?
yaml
синтаксис тоже стоит исправить# vim:ft=ansible:
все свои файлы, которые не являются доступными.Чтобы получить красивый YAML с двумя пробелами по умолчанию, когда я нажимаю возврат каретки после двоеточия, я добавил это в свой
.vimrc
:autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
Это также хорошо сочетается с чертой ожидаемого результата OP.
источник
autocmd FileType yaml,yml setlocal ...
filetype plugin indent on
сначала. Также неплохо иметьsyntax on
перед этим.Вы можете отключить повторный переход при вводе
:
ключа::set indentkeys-=<:>
Отредактируйте
~/.vimrc
файл и добавьте эти строки:filetype plugin indent on autocmd FileType yaml setl indentkeys-=<:>
Примечание:
autocmd
идет послеfiletype
.Вы можете активировать повторный переход, набрав CTRL-Fв режиме INSERT , например:
hello: world foo: bar<C-F>
источник
Вы можете использовать эту автокоманду, чтобы Vim правильно делал отступ для файлов YAML (поместите его в свои
.vimrc
):" Fix auto-indentation for YAML files augroup yaml_fix autocmd! autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0# indentkeys-=<:> augroup END
По сути, для файла YAML он указывает Vim:
#
) в начало строки или двоеточия.источник
Вы можете добавить комментарий в свой YAML, чтобы сообщить Vim о специальной конфигурации для этого файла. Например:
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab: foo: bar: - a - b
Затем каждый, кто использует этот файл с vim по умолчанию, может поделиться конфигурацией создателя файла. Это хорошо работает, особенно при сотрудничестве.
источник
Вот что у
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
источник
Я обнаружил, что https://github.com/stephpy/vim-yaml отлично работает. Это плагин vim, который выполняет отступы (и подсветку синтаксиса) файлов yaml. Его установка решает и конкретную проблему, о которой вы спрашивали.
Вам необходимо установить плагин (см. Документацию в репозитории GitHub), и пока
filetype=yaml
он исправит ваш отступ. Это поможет вам обоимV
помощью для выбора по строкам, затем используйтеj
или,k
чтобы выбрать больше строк), а затем запустить форматирование vim с помощью=
источник