Vim scheint nicht korrekt auf ein Bindestrich-Symbol in YAML-Dateien zu reagieren, wodurch das Format beschädigt wird.
Ich habe zum Beispiel einen Block, der so aussehen sollte:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Wenn ich restart exim4
fertig eingegeben habe und service:
eingebe, zeigt Vim meine letzte service
-Zeile erneut an:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Vim versucht also, die Sätze spaltenweise auszurichten -, aber das ist in YAML nicht nötig. Ich möchte ein Array mit zwei Werten erstellen.
Wie kann ich das beheben?
Installieren Sie dieses Plugin:
https://github.com/chase/vim-ansible-yaml
Es ist für Ansible gedacht, funktioniert aber theoretisch mit allen Arten von YAML-Dateien. Sie müssen Folgendes tun: set filetype = ansible, wenn Sie nicht mit verwandten Dateien arbeiten.
Um die Nice 2-space YAML als Standard zu erhalten, wenn Sie nach dem Doppelpunkt auf Wagenrücklauf klicken, fügte ich dies meinem .vimrc
hinzu:
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
Dies spielt auch Nizza mit dem Strich für das erwartete Ergebnis des OP.
Sie können Reindent deaktivieren, wenn Sie :
key eingeben:
:set indentkeys-=<:>
Bitte editieren Sie die Datei ~/.vimrc
und fügen Sie diese Zeilen hinzu:
filetype plugin indent on
autocmd FileType yaml setl indentkeys-=<:>
Anmerkung:autocmd
steht nach filetype
.
Sie können einen erneuten Einzug durch Eingabe auslösen CTRL-F im INSERT Modus, zum Beispiel:
hello: world
foo: bar<C-F>
Sie können einen Kommentar in Ihre YAML einfügen, um Vim die spezielle Konfiguration für diese Datei mitzuteilen. Zum Beispiel:
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:
foo:
bar:
- a
- b
Dann kann jeder, der diese Datei mit einem Standard-VIM verwendet, die Konfiguration des Dateierstellers freigeben. Es funktioniert gut, vor allem bei der Zusammenarbeit.
Hier ist die augroup
, die ich für yaml habe:
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
Sie können diesen automatischen Befehl verwenden, um Vim das Einrücken von YAML-Dateien zu erleichtern (setzen Sie es in Ihren .vimrc
):
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0# indentkeys-=<:>
Grundsätzlich weist Vim für YAML-Dateien an:
#
) am Zeilenanfang oder Doppelpunkt.Ich habe https://github.com/stephpy/vim-yaml gefunden, um super zu funktionieren. Es ist ein vim-Plugin, das Einrückung (und Syntaxhervorhebung) von yaml-Dateien vornimmt. Durch die Installation wird das spezifische Problem gelöst, nach dem Sie ebenfalls gefragt haben.
Sie müssen das Plugin installieren (siehe das Doco im GitHub-Repo) und solange Ihr filetype=yaml
das Einrücken korrigiert. Es wird euch beiden helfen
V
für die zeilenweise Auswahl, verwenden Sie j
oder k
, um weitere Zeilen auszuwählen) und lösen Sie die vim-Formatierung mit =