2014-11-16 11 views
46

Vim nie reaguje poprawnie na symbol tablicy rozdzielczej w plikach YAML, dlatego łamie format.Niewłaściwe wcięcie podczas edytowania Yaml w Vim

Na przykład mam blok, który powinien wyglądać tak:

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

Kiedy skończysz wpisywać restart exim4 i wpisz service: Vim reindents mój ostateczny service wiersz:

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

Tak wyraźnie Vim próbuje wyrównaj zdania zgodnie z kolumną, ale nie jest to potrzebne w YAML. Chcę utworzyć tablicę z dwiema wartościami.

Jak to naprawić?

Odpowiedz

20

zainstalować ten plugin:

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

Jest wykonana z ansibl w umyśle, ale w teorii będzie działać ze wszystkimi rodzajami plików YAML. Będziesz musiał: ustawić niestety filetype = ansible, jeśli nie pracujesz z plikami powiązanymi z ansibli.

+0

Widziałem tę wtyczkę - oczekuje ona, że ​​nazwa pliku będzie miała określoną nazwę i/lub będzie znajdować się w określonym folderze. Ansable playbooks nie są jedynymi plikami, które edytuję. Dlatego nawet nie próbowałem go zainstalować. Dzięki, ustawię yml na typ 'ansible'. – Glueon

+0

Wow, robi dużą różnicę, myślę, że chociaż regularna składnia 'yaml' warta jest również poprawienia – akostadinov

8

Można wyłączyć reindent po wpisaniu : kluczowe:

:set indentkeys-=<:> 

Zedytuj ~/.vimrc plik i dodać te linie:

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

Uwaga:autocmd przychodzi po filetype.


Można wywołać reindent wpisując CTRL-F w INSERT trybie, na przykład:

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

W celu uzyskania ładne 2-space YAML jako domyślny, kiedy hit 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ż gra dobrze z linią do oczekiwanego wyniku PO.

+1

Dzięki, wykonuje swoją pracę. – reversiblean

Powiązane problemy