pengembangan-web-mp-pd.com

Tombol Tab == 4 spasi dan indentasi otomatis setelah kurung kurawal di Vim

Bagaimana cara membuat vi - Vim tidak pernah menggunakan tab (mengubah spasi menjadi tab, buruk!), Membuat kunci tab == 4 spasi, dan secara otomatis memasukkan kode setelah blok kurung kurawal seperti Emacs tidak?

Juga, bagaimana cara menyimpan pengaturan ini sehingga saya tidak perlu memasukkannya lagi?

Saya telah melihat pertanyaan lain yang terkait dengan ini, tetapi sepertinya selalu sedikit dari apa yang saya inginkan.

1170
mmcdole

Seperti yang telah ditunjukkan dalam beberapa jawaban di bawah ini, metode yang disukai sekarang adalah TIDAK menggunakan smartindent, tetapi sebaliknya gunakan yang berikut ini (di .vimrc ) Anda:

filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

Di file .vimrc: Anda:

set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

File bantuan membutuhkan sedikit waktu untuk membiasakan diri, tetapi semakin banyak Anda membaca, semakin baik Vim:

:help smartindent

Bahkan lebih baik, Anda dapat menyematkan pengaturan ini di sumber Anda untuk portabilitas:

:help auto-setting

Untuk melihat pengaturan Anda saat ini:

:set all

Seperti graywh tunjukkan dalam komentar, smartindent telah digantikan oleh cindent yang "Bekerja lebih cerdik", meskipun masih terutama untuk bahasa dengan sintaks mirip C:

:help C-indenting
1732
Ken

Terkait, jika Anda membuka file yang menggunakan tab dan spasi, anggap Anda punya

set expandtab ts=4 sw=4 ai

Anda dapat mengganti semua tab dengan spasi di seluruh file dengan

:%retab
217
netjeff

Cara terbaik untuk mendapatkan indentasi filetype-spesifik adalah dengan menggunakan filetype plugin indent on di vimrc Anda. Maka Anda dapat menentukan hal-hal seperti set sw=4 sts=4 et di .vim/ftplugin/c.vim, misalnya, tanpa harus menjadikannya global untuk semua file yang sedang diedit dan sintaks tipe non-C lainnya akan mendapatkan indentasi yang benar, juga (bahkan lisps) .

86
graywh

Untuk memiliki tab 4-ruang di sebagian besar file, tab char sebenarnya berukuran 8-lebar di Makefiles, dan indentasi otomatis dalam berbagai file termasuk C/C++, letakkan ini di file ~/.vimrc Anda:

" Only do this part when compiled with support for autocommands.
if has("autocmd")
    " Use filetype detection and file-based automatic indenting.
    filetype plugin indent on

    " Use actual tab chars in Makefiles.
    autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif

" For everything else, use a tab width of 4 space chars.
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.
50
Shervin Emami

Pada banyak sistem Linux, seperti Ubuntu, file .vimrc tidak ada secara default, jadi Anda disarankan untuk membuatnya terlebih dahulu.

Jangan gunakan file .viminfo yang ada di direktori home. Ini digunakan untuk tujuan yang berbeda.

Langkah 1: Buka direktori home Anda

cd ~

Langkah 2: Buat file

vim .vimrc

Langkah 3: Tambahkan konfigurasi yang disebutkan di atas

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

Langkah 3: Simpan file, dengan menekan Shift + ZZ.

49
Erick

Cara yang disarankan adalah menggunakan indentasi berbasis filetype dan hanya menggunakan smartindent dan cindent jika itu tidak cukup.

Tambahkan berikut ini ke .vimrc Anda

set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

Semoga ini membantu sebagai jawaban yang berbeda.

28
Chaudhry Junaid

edit ~/.vimrc Anda

$ vim ~/.vimrc

tambahkan baris berikut:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
11
Yusuf Ibrahim

Dari VIM wiki :

:set tabstop=4
:set shiftwidth=4
:set expandtab
9
User

Indentasi otomatis didasarkan pada mode sintaksis saat ini. Saya tahu bahwa jika Anda mengedit Foo.Java, maka masukkan { dan tekan Enter indentasi baris berikut.

Adapun tab, ada dua pengaturan. Di dalam Vim, ketik titik dua dan kemudian "atur tabstop = 4" yang akan mengatur tab untuk ditampilkan sebagai empat spasi. Tekan titik dua lagi dan ketik "set expandtab" yang akan menyisipkan spasi untuk tab.

Anda dapat menempatkan pengaturan ini dalam .vimrc (atau _vimrc pada Windows) di direktori home Anda, jadi Anda hanya perlu mengetiknya sekali.

6
Joey Gibson