Jawaban terpadu:
Jika Anda menggunakan tab
Saya akan mencoba menggunakan listchars:
:set listchars=tab:\|\
:set list
Catatan: ada spasi setelah yang terakhir di \
atas.
Metode ini bagus karena menggunakan dukungan bawaan Vim untuk menunjukkan hal semacam ini.
Contoh output:
| if (1) {
| | func();
| }
Namun, ini tidak berfungsi untuk memimpin ruang. Seperti yang ditunjukkan oleh @Josh Petrie, ada tambalan yang berfungsi untuk spasi , tetapi Anda harus mengkompilasi ulang Vim, yang berada di luar cakupan jawaban ini.
Jika Anda menggunakan spasi, dan tidak keberatan menggunakan plugin
Vaibhav Sagar menunjukkan plugin indentLine melakukan fungsi ini.
Instal dengan cara normal (lihat menginstal Plugin ) dan tampaknya secara ajaib hanya berfungsi tanpa input lebih lanjut. Jika Anda tidak keberatan dengan bilah ASCII, Anda tidak perlu melakukan apa pun dengan font Anda. Contoh output dari contoh Anda setelah pengaturan pengaturan lekukan Anda dan berjalan:IndentLinesReset
45 ¦ var move = function(direction) {
46 ¦ ¦ if(!initialized) { initialize(); }
47
48 ¦ ¦ if(shiftBoard(direction)) {
49 ¦ ¦ ¦ setTimeout(addRandomPiece, 100);
50 ¦ ¦ }
51 ¦ };
Plugin ini membutuhkan Vim 7.3 atau lebih baru, dan memanfaatkan fitur tersembunyi dari versi tersebut. Alih-alih menyembunyikan teks, teks menggantikan teks dengan bilah di tampilan, tetapi bukan buffer yang sebenarnya. Hasilnya adalah Anda melihat bilah tetapi tidak disimpan ke dalam file (karena sebenarnya spasi)
Peringatan
Kedua metode ini menganggap kode indentasi "benar". Mereka tidak menempatkan garis indentasi pada tingkat indentasi ketika "blok" dibuka (yang tampaknya dilakukan oleh sublim) tetapi menempatkan garis pada interval teratur berdasarkan pada pengaturan indentasi Anda. Selain itu, ini hanya menunjukkan bar pada garis di mana sebenarnya ada ruang (itulah sebabnya garis dalam output vim di bawah yang pertama if
tidak memiliki bar, membuat kesenjangan visual)
Opsi lain yang saya gunakan, yang tidak persis seperti yang Anda minta, tetapi mencapai tujuan yang sama untuk membuatnya lebih mudah untuk melihat apa yang ada di kolom yang sama, adalah untuk mengatur yang berikut di Anda
vimrc
:Ini memiliki pertukaran yang harus Anda pindahkan kursor ke kolom yang ingin Anda lihat, tetapi Anda mendapatkan lebih sedikit kekacauan visual. Biasanya ketika saya peduli dengan level indentasi, saya tetap menjaga kursor saya. Cara saya juga tidak canggung dalam bahasa seperti python tanpa menutup kawat gigi.
sumber
Demi kelengkapan, ada juga plugin Indent Guides , yang menunjukkan tingkat lekukan dengan mengganti warna ruang putih. Itu membutuhkan versi 7.2 atau yang lebih baru. Karena ia menggunakan variabel
tabstop
danshiftwidth
, itu mungkin akan berfungsi untuk pengaturan lekukan Anda segera.Setelah plugin diinstal, Anda cukup menggunakan
:IndentGuidesEnable
atau:IndentGuidesDisable
. Jika Anda menggunakan terminal vim, perhatikan bahwa, sesuai dengan manual,Untuk mengubah warna panduan untuk tangkapan layar, saya menggunakan yang berikut ini
sehingga warna tidak dihitung ulang ketika buffer ditukar, dan kemudian mengatur warna menggunakan
Seperti dengan solusi lain yang disajikan, itu hanya menunjukkan panduan indent pada saluran jika ada spasi.
sumber
let g:indent_guides_enable_on_vim_startup=1
ke .vimrc saya untuk mengaktifkan ini saat startup.Saya telah menemukan plugin indentLine menjadi yang terbaik untuk ini. Anda memang membutuhkan font dengan simbol yang sesuai, saya menemukan Consolas di Windows dan Menlo di Mac OS X berfungsi dengan baik. Seperti yang ditunjukkan dalam jawaban terpadu di atas, ia bekerja dengan (ab) menggunakan
conceal
fitur vim untuk meletakkan bilah vertikal (dari font yang digunakan) di tempat yang tepat. Saya cukup senang dengan solusi ini tetapi kerugiannya adalah bilah vertikal saya adalah bagian dari mesin terbang gambar kotak dan mereka berpusat di tengah bukannya di kiri seperti di editor lain. Saya sudah terbiasa tetapi bisa diperbaiki dengan menambal font Anda secara manual atau menggunakan font seperti Fantasque Sans Mono (perhatikan bagaimana screenshot di repo github yang terhubung menggunakan indentLine).sumber
Plugin indentLine cenderung lambat pada file-file non-kecil, yang dapat diamati ketika mengklik enter karena tertinggal satu detik atau lebih.
Saya telah menemukan vim-indentguides sebagai plugin yang lebih cepat dan serupa secara visual, yang juga secara visual membedakan indentasi tab versus indentasi ruang.
sumber