Tabstop elastis di Vim?

26

Apakah ada plugin atau fitur bawaan di Vim yang memungkinkan tabstop elastis ? Saya telah mencari sedikit, dan saya menemukan beberapa referensi yang mengatakan itu tidak mungkin di Vim, tetapi itu sudah cukup tua.

Apakah ada cara untuk memiliki tabstop elastis di Vim? Saya baik-baik saja dengan solusi untuk Neovim juga, karena itulah yang saya gunakan.

Jeroen
sumber
2
Ada permintaan fitur yang terbuka untuk ini di Neovim.
Caleb

Jawaban:

18

Sejauh yang saya tahu tidak ada cara yang masuk akal untuk melakukannya dalam sebuah plugin.

Ada tambalan untuk itu, tetapi sulit untuk memprediksi kapan / jika tambalan akan digabung.

lcd047
sumber
6
Siapa saja, jika Anda ingin ini digabung, tolong mendukungnya di vim-dev (dan juga balas balik seberapa bagus ini bekerja untuk Anda)
Christian Brabandt
2
Patch ini tampaknya tidak benar-benar menjadi sandaran elastis. Alih-alih itu tabstop variabel, tetapi Anda harus mengatur titik berhenti sebelumnya. Ini bagus dengan caranya sendiri tetapi tidak benar-benar tentang pertanyaannya.
Caleb
@ Caleb, Anda mungkin bisa skrip sesuatu, setelah tambalan var tabstop telah digabungkan.
Christian Brabandt
@ Kristen tidak, kamu tidak bisa. Lihat diskusi di web tetapi ini tidak dapat dilakukan sebagai skrip / plugin dalam vim (bahkan dengan variabel dengan tambalan tabstop) karena hanya menyimpan satu metode untuk merender semua baris. Itu hanya tidak memaparkan apa yang Anda butuhkan untuk membuat ini bekerja.
Caleb
5
Tambalan yang
Christian Brabandt
8

Dari komentar: sejak versi 8.1.105, vim memiliki +vartabsfitur waktu kompilasi, terima kasih kepada Christian Brabandt !

Sejauh yang saya bisa lihat, ini memungkinkan penerapan tabstop elastis. Lihat permintaan tarik sebenarnya .

ulidtko
sumber
1
Anda dapat menautkan ke dokumen atau menjelaskan bagaimana penerapannya. Itu mungkin membantu pembaca di masa mendatang lebih dari tautan ke pengguna yang menyebutkannya.
Lucas
2
: set vartabstop = 4,20,10,8 - Ini akan membuat lebar tab pertama 4 spasi, 20 spasi kedua, 10 spasi ketiga, dan semua tab berikut 8 spasi.
pdwalker
1
vartabstop tidak cukup untuk tabstop elastis, karena tabstop tidak dapat bervariasi di antara blok kode. vartabstop berlaku untuk seluruh file.
Aron Griffis