Pertama, jangan gunakan Tabkunci di Vim untuk indentasi manual. Vim memiliki sepasang perintah dalam mode sisipkan untuk secara manual menambah atau mengurangi jumlah indentasi. Perintah-perintah itu adalah Ctrl-Tdan Ctrl-D. Perintah-perintah ini mengamati nilai-nilai tabstop
, shiftwidth
danexpandtab
, dan mempertahankan campuran spasi dan tab yang benar (jumlah tab maksimum diikuti oleh jumlah spasi yang diperlukan).
Kedua, kunci indentasi manual ini tidak harus digunakan terlalu banyak jika Anda menggunakan lekukan otomatis.
Jika Ctrl-Talih-alih Tabmengganggu Anda, Anda dapat memetakannya kembali:
:imap <Tab> ^T
Anda juga dapat memetakan Shift-Tabuntuk melakukan Ctrl-Ddeindent:
:imap <S-Tab> ^D
Di sini ^ T dan ^ D adalah karakter kontrol literal yang dapat dimasukkan sebagai Ctrl-VCtrl-T.
Dengan pemetaan ini, Anda masih bisa mengetik Tab literal ke dalam buffer menggunakan Ctrl-VTab. Perhatikan bahwa jika Anda melakukan ini, bahkan jika :set expandtab
dalam keadaan aktif, Anda mendapatkan karakter tab yang tidak dikembangkan.
Efek serupa dengan <Tab>
peta dicapai dengan menggunakan:set smarttab
, yang juga menyebabkan backspace di depan garis berperilaku pintar.
Dalam smarttab
mode, ketika Tabdigunakan bukan pada awal baris, itu tidak memiliki arti khusus. Itu berbeda dari pemetaan di atas saya Tabuntuk Ctrl-T, karenaCtrl-T di mana saja digunakan dalam garis (dalam mode insert) akan meningkatkan lekukan garis ini.
Pemetaan berguna lainnya mungkin:
:map <Tab> >
:map <S-Tab> <
Sekarang kita dapat melakukan hal-hal seperti memilih beberapa baris, dan tekan Tabuntuk membuat indentasi berakhir. Atau pukulTab dua kali pada baris (dalam mode perintah) untuk meningkatkan lekukannya.
Jika Anda menggunakan perintah manajemen lekukan yang tepat, maka semuanya dikendalikan oleh tiga parameter: shiftwidth
, tabstop
dan expandtab
.
The shiftwidth
parameter mengontrol ukuran lekukan Anda; jika Anda ingin empat inden spasi, gunakan :set shiftwidth=4
, atau singkatan :set sw=4
.
Jika ini dilakukan, maka lekukan akan dibuat menggunakan campuran spasi dan tab, karena noexpandtab
ini adalah default. Gunakan :set expandtab
. Ini menyebabkan karakter tab yang Anda ketikkan ke buffer untuk memperluas ke spasi, dan untuk lekukan yang dikelola Vim hanya menggunakan spasi.
Kapan expandtab
aktif, dan jika Anda mengelola lekukan Anda melalui semua mekanisme Vim yang tepat, nilai tabstop
menjadi tidak relevan. Ini mengontrol bagaimana tab muncul jika mereka terjadi pada file. Jika Anda telah set tabstop=8 expandtab
dan kemudian menyelipkan tab keras ke dalam file menggunakan Ctrl-VTab, itu akan menghasilkan keselarasan ke posisi tab berbasis 8 kolom berikutnya, seperti biasa.