Vim sangat akomodatif dalam hal tab Vs. preferensi ruang. Seperti yang saya pahami, tabstop
pengaturan menunjukkan lebar karakter tab. The shiftwidth
Pengaturan menetapkan berapa kolom untuk kenaikan / pengurangan bila menggunakan <<dan >>perintah, sedangkan softtabstop
pengaruh pengaturan jumlah spasi untuk dimasukkan saat Anda menekan Tabtombol dalam modus insert. Jika expandtab
aktif, tombol tab menyisipkan softtabstop
jumlah karakter spasi. Sedangkan dengan expandtab
dimatikan, menekan Tabtombol akan menyisipkan sesedikit mungkin jumlah karakter tab + spasi yang cocok softtabstop
. (Harap perbaiki saya jika saya salah.)
Poin terakhir ini membuat saya bertanya-tanya: adakah kasus praktis yang tidak Anda inginkan shiftwidth == tabstop && tabstop == softtabstop
? Saya tidak bisa memikirkan satu pun. Sejauh yang saya ketahui, akan sangat mudah jika saya dapat mengatur semua 3 ini ke nilai yang sama, dalam satu tugas tunggal. misalnya menelepon:
:set stab=4
yang setara dengan berlari:
:set tabstop=4 softtabstop=4 shiftwidth=4
Adakah yang bisa menyarankan bagaimana ini bisa dilakukan?
MEMPERBARUI
Terima kasih atas balasan begitu jauh dari terlalu banyak php , Hobbs dan kaiser.se . Daripada membalas satu per satu, saya memperbarui pertanyaan di sini.
Softtabstop dengan expandtab dimatikan
Saya katakan di atas bahwa dengan expandtab dimatikan, menekan tombol Tab akan menyisipkan sesedikit mungkin jumlah karakter tab + spasi yang cocok softtabstop
. Saya mendukungnya, tetapi saya pikir saya perlu menjelaskan apa yang saya maksud. Saya akan mencoba melakukannya dengan beberapa contoh. Untuk mengikuti, jalankan :set list
sehingga Anda dapat melihat karakter tab.
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
Dalam mode sisip, menekan tombol tab menyisipkan 2 karakter spasi. Tekan tombol tab untuk kedua kalinya, dan alih-alih memasukkan dua karakter spasi lagi (dengan total 4 karakter spasi), 2 spasi sebelumnya diganti dengan karakter tab tunggal. Tabstop disetel ke 4, jadi satu karakter tab memiliki lebar yang sama dengan 4 spasi.
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
Dalam mode sisip, menekan tombol tab akan menyisipkan 1 karakter tab ditambah 2 spasi. Karakter tab memiliki lebar 4, jadi total lebar adalah 6, dan ini dicapai dengan menggunakan 3 karakter. Menekan tombol tab untuk kedua kalinya menyisipkan dua karakter tab, dan menghapus dua spasi yang telah disisipkan sebelumnya. Lebar totalnya adalah 12, dan ini dicapai dengan menggunakan 3 karakter.
Dalam kedua contoh ini, Vim menyisipkan jumlah minimum karakter tab + spasi yang cocok dengan softtabstop.
Jika saya bekerja dengan expandtab dimatikan, saya tidak dapat melihat diri saya menginginkan kontrol ekstra granular yang dapat dicapai dengan mengatur softtabstop ke nilai yang berbeda dari tabstop. Akan tetap berguna bagi saya untuk dapat mengatur tabstop
, softtabstop
dan shiftwidth
ke nilai yang sama dengan satu perintah.
Apakah expandtab membuat softtabstop menjadi mubazir?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
Dalam mode sisip, menekan tombol tab menyisipkan 4 spasi. Menekan tombol hapus menghapus satu spasi - jadi Anda harus mundur 4 kali jika Anda menekan tombol tab secara tidak sengaja.
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
Dalam mode sisip, menekan tombol tab menyisipkan 4 spasi. Menekan tombol spasi mundur menghapus 4 spasi.
Jika saya bekerja dengan expandtab
dihidupkan, saya lebih suka tombol hapus untuk menghapus jumlah spasi yang sama seperti sisipan tombol tab. Jadi dalam kasus ini, juga, saya merasa akan berguna untuk dapat menetapkan nilai yang sama tabstop
, softtabstop
dan shiftwidth
secara bersamaan.
Jalan pintas akan tetap berguna
Sangat bagus bahwa Vim memberikan begitu banyak fleksibilitas, tetapi saya tidak dapat melihat diri saya membutuhkannya. Saya hanya ingin dapat memilih lebar tab, dan apakah itu tab 'keras' (menggunakan karakter tab) atau tab 'lunak' (terdiri dari spasi). Beralih antara tab keras dan lunak cukup mudah ( :set expandtab!
), tetapi saya berharap lebih mudah untuk mengatur lebar tab, tanpa harus mengutak-atik 3 parameter berbeda.
Jadi saran yang saya usulkan untuk sesuatu seperti :set stab=4
masih terdengar bagus bagi saya.