Pengaturan saya saat ini mengasumsikan 8 spasi; bagaimana saya bisa mendefinisikannya kembali?
Pengaturan saya saat ini mengasumsikan 8 spasi; bagaimana saya bisa mendefinisikannya kembali?
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 :
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
shiftwidth
menyamakan jumlah karakter tab kalitabstop
. Ini juga digunakan oleh hal-hal seperti=
,>
dan<
perintah.
softtabstop
Menyetel ini ke nilai bukan nol selain
tabstop
akan 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
retab
perintah.
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'
~/.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 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)! :-)
tabstop=8
untuk indentasi yang terdiri dari 4 spasi? Saya tidak bisa mendapatkan alasannya setelah membaca deskripsi berbagai pengaturan. Jawaban lain mengatakan menggunakan tabstop=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:
$ 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
:retab
untuk mengkonversi yang sudah ada tab
ke spaces
. vim.wikia.com/wiki/Converting_tabs_to_spaces
Ada beberapa pengaturan yang menentukan apakah akan menggunakan spasi atau tab.
Jadi di sini adalah fungsi praktis yang dapat didefinisikan dalam ~/.vimrc
file 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
):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Lihat juga: Mengubah tab menjadi spasi .
Berikut ini cuplikan lain dari Wikia yang dapat digunakan untuk beralih antara tab dan spasi :
" 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.
Sumber:
:help tabstop
:help tabstop
dalam vim.
Satu hal lagi, gunakan
:retab
untuk mengonversi yang sudah ada tab
ke spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
:set sw=4
Lihat Menguasai editor VI
Tambahkan baris
set ts=4
dalam
~/.vimrc
file untuk per pengguna
atau
/etc/vimrc
file untuk seluruh sistem
Dasar saya ~ / .vimrc dengan komentar:
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 mc
dan yang lainnya untuk menghemat waktu Anda. Kalau tidak, Anda akan mendefinisikan ulang editor git
, crontab
dll
F10
di nano
tetapi saya selalu melakukan beberapa trik dengan save (mungkin F10
adalah solusi). atau tidak berhasil screen
? Saya tidak ingat, benci saja)