Wydaje się, że Vim nie reaguje poprawnie na symbol myślnika w plikach YAML, przez co łamie format.
Na przykład mam blok, który powinien wyglądać tak:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Kiedy kończę pisać restart exim4
i service:
wpisuję Vim, reindentuje moją ostatnią service
linię:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Tak więc wyraźnie Vim próbuje wyrównać zdania według kolumn, ale nie jest to potrzebne w YAML. Chcę utworzyć tablicę z dwiema wartościami.
Jak to naprawić?
yaml
składnia też warta jest# vim:ft=ansible:
wszystkie swoje pliki, które nie są obsługiwane.Aby uzyskać ładną 2-spację YAML jako domyślną, kiedy naciskam powrót karetki po dwukropku, dodałem to do mojego
.vimrc
:autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
To również dobrze pasuje do spodziewanego wyniku PO.
źródło
autocmd FileType yaml,yml setlocal ...
filetype plugin indent on
najpierw. Miły jest teżsyntax on
wcześniejszy akcent .Możesz wyłączyć reindent po wpisaniu
:
klucza::set indentkeys-=<:>
Edytuj
~/.vimrc
plik i dodaj następujące wiersze:filetype plugin indent on autocmd FileType yaml setl indentkeys-=<:>
Uwaga:
autocmd
następuje pofiletype
.Możesz wywołać reindent, wpisując CTRL-Fw trybie INSERT , na przykład:
hello: world foo: bar<C-F>
źródło
Możesz użyć tej autokomendy, aby Vim poprawnie wcinał pliki YAML (umieść to w swoim
.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
Zasadniczo, dla pliku YAML instruuje Vima, aby:
#
) na początku wiersza lub dwukropka.źródło
Możesz dodać komentarz w swoim YAML, aby powiedzieć Vimowi o specjalnej konfiguracji dla tego pliku. Na przykład:
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab: foo: bar: - a - b
Wtedy każdy, kto używa tego pliku z domyślnym vimem, może współdzielić konfigurację twórcy pliku. Sprawdza się szczególnie podczas współpracy.
źródło
Oto
augroup
mam dla yamla: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
źródło
Odkryłem, że https://github.com/stephpy/vim-yaml działa świetnie. Jest to wtyczka Vima, która wykonuje wcięcia (i podświetlanie składni) plików yaml. Zainstalowanie go rozwiązuje konkretny problem, o który również pytałeś.
Musisz zainstalować wtyczkę (zobacz dokumentację w repozytorium GitHub) i pod warunkiem,
filetype=yaml
że poprawi ona Twoje wcięcia. Pomoże wam obojguV
za pomocą do wyboru linii, a następnie użyjj
lub,k
aby wybrać więcej linii), a następnie uruchom formatowanie vima za pomocą=
źródło