Vim tampaknya tidak bereaksi dengan benar pada simbol tanda hubung dalam file YAML karena itu merusak format.
Misalnya saya memiliki blok yang akan terlihat seperti ini:
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Ketika saya selesai mengetik restart exim4
dan mengetik service:
Vim kembali service
baris terakhir saya :
handlers:
- name: restart exim4
service: name=exim4 state=restarted
Jadi jelas Vim mencoba menyelaraskan kalimat berdasarkan kolom tetapi bukan itu yang dibutuhkan di YAML. Saya ingin membuat array dengan dua nilai.
Bagaimana cara memperbaikinya?
yaml
sintaks biasa juga layak diperbaiki# vim:ft=ansible:
semua file Anda yang tidak mungkin.Untuk mendapatkan YAML 2 ruang yang bagus sebagai default ketika saya menekan carriage return setelah titik dua, saya menambahkan ini ke saya
.vimrc
:autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
Ini juga bermain bagus dengan tanda hubung untuk hasil yang diharapkan OP.
sumber
autocmd FileType yaml,yml setlocal ...
filetype plugin indent on
pertama. Juga sentuhan yang bagus harus dimilikisyntax on
sebelum itu.Anda dapat menonaktifkan reindent saat Anda mengetik
:
kunci::set indentkeys-=<:>
Harap edit
~/.vimrc
file, dan tambahkan baris berikut:filetype plugin indent on autocmd FileType yaml setl indentkeys-=<:>
Catatan:
autocmd
datang setelahfiletype
.Anda dapat memicu pengindentasian ulang dengan mengetik CTRL-Fdalam mode INSERT , misalnya:
hello: world foo: bar<C-F>
sumber
Anda dapat menggunakan perintah otomatis ini untuk membuat Vim mengindentasi file YAML dengan benar (taruh ke Anda
.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
Pada dasarnya, untuk file YAML itu menginstruksikan Vim untuk:
#
) di awal baris, atau titik dua.sumber
Anda dapat menambahkan komentar di YAML Anda untuk memberi tahu konfigurasi khusus Vim untuk file ini. Sebagai contoh:
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab: foo: bar: - a - b
Kemudian setiap orang, yang menggunakan file ini dengan vim default, dapat membagikan konfigurasi pembuat file. Ini bekerja dengan baik terutama saat bekerja sama.
sumber
Inilah yang
augroup
saya miliki untuk 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
sumber
Saya telah menemukan https://github.com/stephpy/vim-yaml berfungsi dengan baik. Ini adalah plugin vim yang melakukan indentasi (dan penyorotan sintaks) dari file yaml. Menginstalnya menyelesaikan masalah spesifik yang Anda tanyakan juga.
Anda perlu menginstal plugin (lihat dokumen di repo GitHub) dan selama
filetype=yaml
itu akan memperbaiki indentasi Anda. Ini akan membantu kalian berduaV
untuk pemilihan garis-bijaksana kemudian gunakanj
atauk
untuk memilih lebih banyak baris) kemudian memicu pemformatan vim dengan=
sumber