@ heinrich5991 Saya tidak mengerti. Saya tidak perlu 8 spasi untuk menyadari bahwa sebuah baris di-indentasi, dan lebih dari itu berarti membatasi karakter yang dapat Anda lihat pada baris teks yang panjang (setidaknya sebelum membungkus). Tetapi untuk masing-masing miliknya. :)
weberc2
40
@ heinrich5991 Argumen saya adalah "gunakan sesedikit mungkin untuk dengan mudah mengidentifikasi baris indentasi". Menurut perkiraan saya, kemampuan seseorang untuk dengan mudah mengidentifikasi lekukan turun dengan cepat pada <3 spasi, dan berhenti meningkat pada 4 spasi. Karena itu, lekukan yang melebihi 4 spasi adalah pemborosan, menurut pengalaman saya.
weberc2
7
@ weberc2 Tidak mungkin setuju lebih banyak, sobat. Itulah sebabnya saya merasa sangat sumpek membaca Ruby atau "JavaScript modern", yang masing-masing menggunakan 2 spasi untuk lekukan. Itu sah memberi saya ketegangan mata ketika mencoba mengikuti struktur bersarang berat. Tab keras untuk menang.
Itu tergantung pada apa yang Anda maksudkan. Apakah Anda ingin karakter tab yang sebenarnya dalam file Anda muncul 4 spasi lebar, atau dengan "tab" maksud Anda sebenarnya indent , yang dihasilkan dengan menekan tombol tab, yang akan menghasilkan file yang secara harfiah berisi (hingga) 4 karakter spasi untuk setiap "tab" yang Anda ketik?
Bergantung pada jawaban Anda, salah satu dari set pengaturan berikut ini akan berfungsi untuk Anda:
Untuk karakter tab yang muncul selebar 4 spasi :
set tabstop=4
Jika Anda menggunakan karakter tab aktual dalam kode sumber Anda, Anda mungkin juga menginginkan pengaturan ini (ini sebenarnya adalah default, tetapi Anda mungkin ingin mengaturnya secara defensif):
set softtabstop=0 noexpandtab
Terakhir, jika Anda ingin indentasi berkorespondensi dengan satu tab, Anda juga harus menggunakan:
set shiftwidth=4
Untuk indentasi yang terdiri dari 4 karakter spasi tetapi dimasukkan dengan tombol tab:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Untuk membuat pengaturan di atas permanen, tambahkan baris-baris ini ke vimrc Anda .
Jika Anda perlu melakukan penyesuaian, atau hanya ingin memahami apa arti semua opsi ini, berikut adalah rincian dari arti setiap opsi:
tabstop
Lebar tabstop keras diukur dalam "spasi" - efektif lebar (maksimum) karakter tab yang sebenarnya.
shiftwidth
Ukuran "indent". Ini juga diukur dalam spasi, jadi jika basis kode Anda indentasi dengan karakter tab maka Anda ingin shiftwidthmenyamakan jumlah karakter tab kali tabstop. Ini juga digunakan oleh hal-hal seperti =, >dan <perintah.
softtabstop
Menyetel ini ke nilai bukan nol selain tabstopakan membuat tombol tab (dalam mode penyisipan) menyisipkan kombinasi spasi (dan mungkin tab) untuk mensimulasikan penghentian tab pada lebar ini.
expandtab
Mengaktifkan ini akan membuat tombol tab (dalam mode sisipan) menyisipkan spasi alih-alih karakter tab. Ini juga mempengaruhi perilaku retabperintah.
smarttab
Mengaktifkan ini akan membuat tombol tab (dalam mode penyisipan) menyisipkan spasi atau tab untuk pergi ke indentasi berikutnya dari tabstop berikutnya ketika kursor berada di awal baris (yaitu, satu-satunya karakter sebelumnya adalah spasi).
Untuk detail lebih lanjut tentang semua ini, lihat di vim (misalnya ):help 'optionname':help 'tabstop'
Penting juga untuk memastikan bahwa Makefiles selalu menggunakan karakter tab yang keras, jika tidak build akan gagal! Saya telah menunjukkan caranya, di stackoverflow.com/questions/234564/…
Shervin Emami
29
@Difinisikan Itulah pengaturan vim sistem. ~/.vimrcadalah pengaturan vim pengguna. Kebanyakan orang membiarkan pengaturan sistem sendiri dan hanya mengedit pengaturan pengguna. Catatan yang ~/.vimrctidak akan ada sampai Anda membuatnya di sebagian besar sistem.
Laurence Gonsalves
4
Pengguna Vim memperhatikan set softtabstop=4fitur ini! Saya bosan mencoba membaca kode Anda dengan less, atau editor lain kecuali vim, hanya untuk melihat indentasi aneh karena Anda mendefinisikan ulang tab menjadi beberapa spasi acak (meskipun sistem lain berpikir sebaliknya)! :-)
Ogre Psalm33
6
Dapatkah seseorang membantu saya memahami mengapa jawaban ini mengatakan digunakan tabstop=8untuk indentasi yang terdiri dari 4 spasi? Saya tidak bisa mendapatkan alasannya setelah membaca deskripsi berbagai pengaturan. Jawaban lain mengatakan menggunakan tabstop=4yang lebih masuk akal bagi saya.
Kodos Johnson
5
@KodosJohnson tabstopOpsi mengontrol lebar karakter tab keras. Jika Anda ingin indentasi Anda terdiri dari 4 karakter spasi, daripada karakter tab tunggal yang lebar 4, maka lebar karakter tab Anda tidak masalah - semacam . Dalam praktiknya, Anda mungkin ingin lebar karakter tab Anda berbeda dari lebar indentasi Anda, untuk mengurangi kemungkinan karakter tab menyamar sebagai indentasi yang tepat. ( list+ expandtabdapat membantu di sini juga) Juga, tab 8-char-wide adalah "standar" - terminal Anda, Python, dan banyak alat lain default ke 8-char-wide-tab.
Laurence Gonsalves
746
Untuk menetapkan ini secara permanen untuk pengguna saat ini, buat (atau edit) .vimrcfile:
$ vim ~/.vimrc
Kemudian, rekatkan konfigurasi di bawah ini ke dalam file. Setelah vim dimulai kembali, pengaturan tab akan berlaku.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab " Expand TABs to spaces
Jika Anda tidak memiliki ~ / .vimrc, coba dengan / etc / vim / vimrc. Dalam kasus saya di Ubuntu 16.04 file konfigurasi ada di sana. Namun perlu diingat bahwa mengubah file ini akan menyebabkan konfigurasi digunakan secara global.
Ada beberapa pengaturan yang menentukan apakah akan menggunakan spasi atau tab.
Jadi di sini adalah fungsi praktis yang dapat didefinisikan dalam ~/.vimrcfile Anda :
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
Pemakaian:
:call UseTabs()
:call UseSpaces()
Untuk menggunakannya per ekstensi file, sintaks berikut dapat digunakan (ditambahkan ke .vimrc):
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
Ini memungkinkan menggunakan 4 spasi untuk setiap tab dan pemetaan F9untuk beralih pengaturan.
Saya menyalin dan menempel ini ke file .vimrc saya:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
2 pengaturan pertama berarti bahwa ketika saya menekan Tab, saya mendapatkan 4 spasi. Pengaturan ketiga berarti bahwa ketika saya melakukannya V>(yaitu visual dan indentasi) saya juga mendapatkan 4 spasi.
Tidak selengkap jawaban yang diterima tetapi mungkin membantu orang yang hanya ingin menyalin dan menempelkan sesuatu.
Masukkan pengaturan yang Anda inginkan dalam file ~ / .vimrc - Lihat di bawah untuk beberapa panduan dan praktik terbaik.
Ada empat cara utama untuk menggunakan tab di Vim:
Selalu pertahankan 'tabstop' di 8, set 'softtabstop' dan 'shiftwidth' ke 4 (atau 3 atau apa pun yang Anda suka) dan gunakan 'noexpandtab'. Kemudian Vim akan menggunakan campuran tab dan spasi, tetapi mengetik dan akan berperilaku seperti tab muncul setiap 4 (atau 3) karakter.
Catatan: Mengatur 'tabstop' ke nilai selain 8 dapat membuat file Anda tampak salah di banyak tempat (misalnya, saat mencetaknya).
Set 'tabstop' dan 'shiftwidth' ke apa pun yang Anda suka dan gunakan 'expandtab'. Dengan cara ini Anda akan selalu memasukkan spasi. Format tidak akan pernah berantakan ketika 'tabstop' diubah.
Set 'tabstop' dan 'shiftwidth' ke apa pun yang Anda suka dan gunakan | modeline | untuk mengatur nilai-nilai ini saat mengedit file lagi. Hanya berfungsi saat menggunakan Vim untuk mengedit file.
Selalu atur 'tabstop' dan 'shiftwidth' ke nilai yang sama, dan 'noexpandtab'. Ini kemudian akan bekerja (hanya untuk indentasi awal) untuk pengaturan tabstop yang digunakan orang. Mungkin menyenangkan untuk memiliki tab setelah spasi pertama yang dimasukkan sebagai ruang kosong jika Anda melakukannya. Jika tidak, komentar yang selaras akan salah saat 'tabstop' diubah.
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>
Permanen untuk semua pengguna (saat Anda sendirian di server):
# echo "set tabstop=4" >> /etc/vim/vimrc
Biasanya di server baru apt-get purge nano mcdan yang lainnya untuk menghemat waktu Anda. Kalau tidak, Anda akan mendefinisikan ulang editor git, crontabdll
Jika Anda mengatur EDITOR, sebagian besar program akan menghargainya.
D. Ben Knoble
@ D.BenKnoble kamu benar. saya sudah mencoba. untuk sekarang saya lebih suka menghemat waktu dan saraf saya. tidak dapat memeriksa apa sebenarnya berjalan dengan F10di nanotetapi saya selalu melakukan beberapa trik dengan save (mungkin F10adalah solusi). atau tidak berhasil screen? Saya tidak ingat, benci saja)
Jawaban:
Itu tergantung pada apa yang Anda maksudkan. Apakah Anda ingin karakter tab yang sebenarnya dalam file Anda muncul 4 spasi lebar, atau dengan "tab" maksud Anda sebenarnya indent , yang dihasilkan dengan menekan tombol tab, yang akan menghasilkan file yang secara harfiah berisi (hingga) 4 karakter spasi untuk setiap "tab" yang Anda ketik?
Bergantung pada jawaban Anda, salah satu dari set pengaturan berikut ini akan berfungsi untuk Anda:
Untuk karakter tab yang muncul selebar 4 spasi :
Jika Anda menggunakan karakter tab aktual dalam kode sumber Anda, Anda mungkin juga menginginkan pengaturan ini (ini sebenarnya adalah default, tetapi Anda mungkin ingin mengaturnya secara defensif):
Terakhir, jika Anda ingin indentasi berkorespondensi dengan satu tab, Anda juga harus menggunakan:
Untuk indentasi yang terdiri dari 4 karakter spasi tetapi dimasukkan dengan tombol tab:
Untuk membuat pengaturan di atas permanen, tambahkan baris-baris ini ke vimrc Anda .
Jika Anda perlu melakukan penyesuaian, atau hanya ingin memahami apa arti semua opsi ini, berikut adalah rincian dari arti setiap opsi:
Untuk detail lebih lanjut tentang semua ini, lihat di vim (misalnya )
:help 'optionname'
:help 'tabstop'
sumber
~/.vimrc
adalah pengaturan vim pengguna. Kebanyakan orang membiarkan pengaturan sistem sendiri dan hanya mengedit pengaturan pengguna. Catatan yang~/.vimrc
tidak akan ada sampai Anda membuatnya di sebagian besar sistem.set softtabstop=4
fitur ini! Saya bosan mencoba membaca kode Anda denganless
, atau editor lain kecualivim
, hanya untuk melihat indentasi aneh karena Anda mendefinisikan ulang tab menjadi beberapa spasi acak (meskipun sistem lain berpikir sebaliknya)! :-)tabstop=8
untuk indentasi yang terdiri dari 4 spasi? Saya tidak bisa mendapatkan alasannya setelah membaca deskripsi berbagai pengaturan. Jawaban lain mengatakan menggunakantabstop=4
yang lebih masuk akal bagi saya.tabstop
Opsi mengontrol lebar karakter tab keras. Jika Anda ingin indentasi Anda terdiri dari 4 karakter spasi, daripada karakter tab tunggal yang lebar 4, maka lebar karakter tab Anda tidak masalah - semacam . Dalam praktiknya, Anda mungkin ingin lebar karakter tab Anda berbeda dari lebar indentasi Anda, untuk mengurangi kemungkinan karakter tab menyamar sebagai indentasi yang tepat. (list
+expandtab
dapat membantu di sini juga) Juga, tab 8-char-wide adalah "standar" - terminal Anda, Python, dan banyak alat lain default ke 8-char-wide-tab.Untuk menetapkan ini secara permanen untuk pengguna saat ini, buat (atau edit)
.vimrc
file:Kemudian, rekatkan konfigurasi di bawah ini ke dalam file. Setelah vim dimulai kembali, pengaturan tab akan berlaku.
sumber
:retab
untuk mengkonversi yang sudah adatab
kespaces
. vim.wikia.com/wiki/Converting_tabs_to_spacesatau singkatan untuk vim modeline:
sumber
Ada beberapa pengaturan yang menentukan apakah akan menggunakan spasi atau tab.
Jadi di sini adalah fungsi praktis yang dapat didefinisikan dalam
~/.vimrc
file Anda :Pemakaian:
Untuk menggunakannya per ekstensi file, sintaks berikut dapat digunakan (ditambahkan ke
.vimrc
):Lihat juga: Mengubah tab menjadi spasi .
Berikut ini cuplikan lain dari Wikia yang dapat digunakan untuk beralih antara tab dan spasi :
Ini memungkinkan menggunakan 4 spasi untuk setiap tab dan pemetaan F9untuk beralih pengaturan.
sumber
Saya menyalin dan menempel ini ke file .vimrc saya:
2 pengaturan pertama berarti bahwa ketika saya menekan Tab, saya mendapatkan 4 spasi. Pengaturan ketiga berarti bahwa ketika saya melakukannya
V>
(yaitu visual dan indentasi) saya juga mendapatkan 4 spasi.Tidak selengkap jawaban yang diterima tetapi mungkin membantu orang yang hanya ingin menyalin dan menempelkan sesuatu.
sumber
Masukkan pengaturan yang Anda inginkan dalam file ~ / .vimrc - Lihat di bawah untuk beberapa panduan dan praktik terbaik.
Ada empat cara utama untuk menggunakan tab di Vim:
Selalu pertahankan 'tabstop' di 8, set 'softtabstop' dan 'shiftwidth' ke 4 (atau 3 atau apa pun yang Anda suka) dan gunakan 'noexpandtab'. Kemudian Vim akan menggunakan campuran tab dan spasi, tetapi mengetik dan akan berperilaku seperti tab muncul setiap 4 (atau 3) karakter.
Catatan: Mengatur 'tabstop' ke nilai selain 8 dapat membuat file Anda tampak salah di banyak tempat (misalnya, saat mencetaknya).
Set 'tabstop' dan 'shiftwidth' ke apa pun yang Anda suka dan gunakan 'expandtab'. Dengan cara ini Anda akan selalu memasukkan spasi. Format tidak akan pernah berantakan ketika 'tabstop' diubah.
Set 'tabstop' dan 'shiftwidth' ke apa pun yang Anda suka dan gunakan | modeline | untuk mengatur nilai-nilai ini saat mengedit file lagi. Hanya berfungsi saat menggunakan Vim untuk mengedit file.
Selalu atur 'tabstop' dan 'shiftwidth' ke nilai yang sama, dan 'noexpandtab'. Ini kemudian akan bekerja (hanya untuk indentasi awal) untuk pengaturan tabstop yang digunakan orang. Mungkin menyenangkan untuk memiliki tab setelah spasi pertama yang dimasukkan sebagai ruang kosong jika Anda melakukannya. Jika tidak, komentar yang selaras akan salah saat 'tabstop' diubah.
Sumber:
:help tabstop
sumber
:help tabstop
dalam vim.Satu hal lagi, gunakan
:retab
untuk mengonversi yang sudah ada
tab
kespaces
http://vim.wikia.com/wiki/Converting_tabs_to_spacessumber
Lihat Menguasai editor VI
sumber
Tambahkan baris
set ts=4
dalam
~/.vimrc
file untuk per penggunaatau
/etc/vimrc
file untuk seluruh sistemsumber
Dasar saya ~ / .vimrc dengan komentar:
sumber
Permanen untuk semua pengguna (saat Anda sendirian di server):
Biasanya di server baru
apt-get purge nano mc
dan yang lainnya untuk menghemat waktu Anda. Kalau tidak, Anda akan mendefinisikan ulang editorgit
,crontab
dllsumber
F10
dinano
tetapi saya selalu melakukan beberapa trik dengan save (mungkinF10
adalah solusi). atau tidak berhasilscreen
? Saya tidak ingat, benci saja)