Bagaimana cara membuat Vim beradaptasi dengan gaya indentasi saat ini dari file yang saya edit?

39

Saya mengerjakan berbagai proyek JavaScript. Dalam sebagian besar proyek ini, lekukan file JavaScript adalah 2 spasi, jadi saya telah menetapkan lebar lekukan default saya untuk itu. Namun itu menjadi 1 atau 4 di beberapa proyek lain.

Apakah ada cara untuk meminta Vim untuk mengubah gaya indentasi berdasarkan gaya yang sudah digunakan dalam file saat ini?

thameera
sumber
Mengapa Anda tidak menambahkan pengaturan seperti itu di .vimrc untuk tipe file tertentu? :au BufEnter *.js :set shiftwidth=2. Ini bekerja untuk semua proyek,
SibiCoder
1
@SibiCoder: Karena bahkan tipe file yang sama dapat memiliki gaya indentasi yang berbeda di berbagai proyek. (mis: proyek-proyek yang bukan milik perusahaan yang sama)
thameera
*.*hanyalah sebuah pola. Anda dapat menggunakan nama file atau jalur juga. Atau, Anda dapat menggunakan perintah otomatis serupa seperti yang saya berikan, untuk setiap file. Anda dapat menginstruksikan perintah otomatis untuk mengambil tabwidth dari file saat ini dan meletakkannya untuk path file ini. Cukup mudah.
SibiCoder

Jawaban:

28

Untuk menambah jawaban @Undo di atas. Tim Pope juga memiliki plugin yang mencoba melakukan hal yang sama di tpope / vim-sleuth

Dhruva Sagar
sumber
5
Sleuth tampaknya bekerja sedikit lebih baik daripada pendeteksi indent, dalam pengalaman saya, dan juga akan mencoba untuk menentukan pengaturan indentasi yang tepat untuk file baru dengan melihat file lain di dekat sistem file.
jamessan
@jessess tidak tahu itu, senang tahu.
Dhruva Sagar
2
Harap baca kebijakan kami tentang jawaban rekomendasi-plugin dan tambahkan beberapa detail tentang bagaimana tepatnya menggunakan plugin yang direkomendasikan untuk menyelesaikan masalah.
200_sukses
15

Saya belum menggunakannya, tapi ciaranm / detectindent mungkin apa yang Anda cari. Tampaknya aktif (terakhir diperbarui 25 hari yang lalu), dan sepertinya itu melakukan apa yang Anda inginkan:

Plugin Vim, untuk secara otomatis mendeteksi pengaturan indentasi. Plugin ini menambahkan perintah: DetectIndent, yang mencoba untuk secara cerdas mengatur opsi 'shiftwidth', 'Expandtab' dan 'tabstop' berdasarkan pengaturan yang ada yang digunakan dalam file aktif.

Batalkan
sumber
Plugin ini tidak lagi dalam pengembangan aktif. (Pembaruan terakhir adalah 3 tahun yang lalu .)
Mateen Ulhaq