Bisakah seseorang menjelaskan kepada saya secara sederhana cara termudah untuk mengubah perilaku indentasi Vim berdasarkan jenis file? Misalnya, jika saya membuka file Python seharusnya indent dengan 2 spasi, tetapi jika saya membuka skrip Powershell itu harus menggunakan 4 spasi.
file
vim
settings
indentation
EBGreen
sumber
sumber
Jawaban:
Anda dapat menambahkan
.vim
file yang akan dieksekusi setiap kali vim beralih ke tipe file tertentu.Misalnya, saya punya file
~/.vim/after/ftplugin/html.vim
dengan konten ini:Yang menyebabkan vim menggunakan tab dengan lebar 2 karakter untuk indentasi (
noexpandtab
opsi diatur secara global di tempat lain dalam konfigurasi saya).Ini dijelaskan di sini: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 , gulir ke bawah ke bagian tentang plugin filetype.
sumber
~/.vim/after/ftplugin/html.vim
sebagai gantinya. Tetapi seperti yang orang lain tunjukkan di bawah ini, jauh lebih baik untuk hanya menambahkannyaautocmd FileType html setlocal shiftwidth=2 tabstop=2
ke Anda.vimrc
.autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)filetype plugin on
ke vimrc Anda juga.Gunakan ftplugins atau perintah otomatis untuk mengatur opsi.
ftplugin
Di
~/.vim/ftplugin/python.vim:
Dan jangan lupa untuk menyalakannya
~/.vimrc
:(
:h ftplugin
untuk informasi lebih lanjut)perintah otomatis
Dalam
~/.vimrc
:Anda dapat mengganti salah satu perintah panjang atau pengaturan dengan versi pendek mereka:
autocmd
:au
setlocal
:setl
shiftwidth
:sw
tabstop
:ts
softtabstop
:sts
expandtab
:et
Saya juga menyarankan mempelajari perbedaan antara
tabstop
dansofttabstop
. Banyak orang tidak tahusofttabstop
.sumber
sw
kependekansoftwidth
,sts
kependekansofttabstop
,et
kependekanexpandtab
,setl
kependekansetlocal
, danau
kependekanautocmd
. Anda bisa menggunakan formulir panjang dan bukan formulir pendek.sw
memperluas keshiftwidth
bukansoftwidth
.edit Anda
~/.vimrc
, dan tambahkan jenis file yang berbeda untuk indentasi yang berbeda, misalnya saya inginhtml/rb
indentasi untuk 2 spasi, danjs/coffee
file indentasi untuk 4 spasi:lihat: Mengatur preferensi spasi putih Vim berdasarkan jenis file
sumber
"
:)'
memberikan kesalahan pada semua vim Linux saya. (7.3+, 8.0 ...)"
, artinya jangan menutupnya dengan yang lain"
. Tidak yakin mengapa saya berkomentar demikian.'
tetapi tidak dibiarkan"
tanpa"
@ kanan .Masukkan perintah autocmd berdasarkan akhiran file di ~ / .vimrc Anda
Perintah yang Anda cari mungkin ts = dan sw =
sumber
FileType
?Saya biasanya bekerja dengan
expandtab
set, tapi itu buruk untuk makefiles. Saya baru-baru ini menambahkan:ke akhir file .vimrc saya dan mengenali Makefile, makefile, dan * .mk sebagai makefile dan tidak membuka tab. Agaknya, Anda dapat memperpanjang ini.
sumber
Secara pribadi, saya menggunakan pengaturan ini di .vimrc:
sumber
Ini mungkin diketahui oleh sebagian besar dari kita, tetapi bagaimanapun (saya bingung pertama kali saya): Melakukan
:set et
(:set
expandtab) tidak mengubah tab yang sudah ada dalam file, yang harus dilakukan:retab
. Sebagai contoh:dan tab dalam file digantikan oleh ruang yang cukup. Untuk memiliki tab kembali cukup lakukan:
sumber
Hari ini, Anda dapat mencoba editorconfig , ada juga plugin vim untuk itu. Dengan ini, Anda tidak hanya dapat mengubah ukuran lekukan dalam vim, tetapi di banyak editor lainnya, menjaga gaya pengkodean yang konsisten.
Di bawah ini adalah konfigurasi editor yang sederhana, seperti yang Anda lihat, file python akan memiliki 4 spasi untuk indentasi, dan file template pug hanya akan memiliki 2.
sumber
Meskipun Anda dapat mengkonfigurasi lekukan Vim dengan baik menggunakan plugin indent atau secara manual menggunakan pengaturan, saya sarankan menggunakan skrip python yang disebut Vindect yang secara otomatis menetapkan pengaturan yang relevan untuk Anda ketika Anda membuka file python. Gunakan tip ini untuk menjadikan penggunaan Vindect lebih efektif. Ketika saya pertama kali mulai mengedit file python yang dibuat oleh orang lain dengan berbagai gaya lekukan (tab vs spasi dan jumlah spasi), itu sangat membuat frustrasi. Tapi Vindect bersama dengan file indent ini
Juga merekomendasikan:
sumber
Bagi mereka yang menggunakan
autocmd
, itu adalah praktik terbaik untuk mengelompokkan mereka bersama. Jika pengelompokan terkait dengan deteksi tipe file, Anda mungkin memiliki sesuatu seperti ini:Pengelompokan membantu menjaga
.vimrc
terorganisir terutama sekali filetype memiliki beberapa aturan yang terkait dengannya. Dalam contoh di atas, pintasan komentar khusus untuk file .c ditentukan.Panggilan awal untuk
autocmd!
memberitahu vim untuk menghapus perintah otomatis yang ditentukan sebelumnya dalam pengelompokan tersebut. Ini akan mencegah definisi duplikat jika.vimrc
bersumber lagi. Lihat:help augroup
untuk info lebih lanjut.sumber
Saya menggunakan utilitas yang saya tulis di C disebut
autotab
. Ini menganalisis beberapa ribu baris pertama file yang Anda muat dan menentukan nilai untuk parameter Vimshiftwidth
,tabstop
danexpandtab
.Ini dikompilasi menggunakan, misalnya
gcc -O autotab.c -o autotab
,. Petunjuk untuk berintegrasi dengan Vim ada di tajuk komentar di bagian atas.Autotab cukup pintar, tetapi dapat menjadi bingung dari waktu ke waktu, khususnya oleh yang telah dipertahankan secara tidak konsisten menggunakan gaya indentasi yang berbeda.
Jika file jelas menggunakan tab, atau kombinasi tab dan spasi, untuk lekukan, Autotab akan mencari tahu ukuran tab apa yang digunakan dengan mempertimbangkan faktor-faktor seperti penyelarasan elemen internal melintasi garis-garis berturut-turut, seperti komentar.
Ini bekerja untuk berbagai bahasa pemrograman, dan memaafkan untuk elemen "out of band" yang tidak mematuhi kenaikan indentasi, seperti arahan preprocessing C, label pernyataan C, belum lagi garis kosong yang jelas.
sumber