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


Bagaimana saya membuatnya vi-Vim jangan pernah menggunakan tab (mengubah spasi menjadi tab, buruk!), membuat kunci tab == 4 spasi, dan secara otomatis indent 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 tampaknya selalu sedikit dari yang saya inginkan.


1054
2017-10-24 17:41


asal


Jawaban:


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

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 dalam Anda .vimrc: mengajukan:

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

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

:help smartindent

Bahkan lebih baik, Anda dapat menanamkan pengaturan ini di sumber Anda untuk mudah dibawa:

:help auto-setting

Untuk melihat pengaturan Anda saat ini:

:set all

Sebagai graywh menunjukkan di komentar, smartindent telah digantikan oleh cindent yang "Bekerja lebih cerdik", meskipun masih terutama untuk bahasa dengan sintaks seperti-C:

:help C-indenting


1573
2017-10-24 17:45



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

set expandtab ts=4 sw=4 ai

Anda dapat mengganti semua tab dengan spasi di seluruh file dengan

:%retab

199
2017-11-27 05:42



Cara terbaik untuk mendapatkan lekukan jenis-filetype adalah dengan menggunakannya 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 membuat yang global untuk semua file yang sedang diedit dan sintaks jenis non-C lainnya akan mendapatkan indentasi dengan benar, juga (bahkan lisps).


83
2018-01-04 21:09



Untuk memiliki tab 4-ruang di sebagian besar file, char tab 8-lebar yang nyata di Makefile, dan indentasi otomatis dalam berbagai file termasuk C / C ++, taruh ini di ~/.vimrc mengajukan:

" 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.

42
2018-01-24 02:42



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

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

Langkah 1: Pergi ke 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 Bergeser + ZZ.


39
2017-08-04 13:26



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

Tambahkan yang berikut ini ke .vimrc Anda

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

Semoga itu membantu sebagai jawaban yang berbeda.


26
2017-11-18 19:08



Dari Wiki vim:

:set tabstop=4
:set shiftwidth=4
:set expandtab

9
2017-10-08 01:26



edit ~ / .vimrc Anda

$ vim ~/.vimrc

tambahkan baris berikut:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

9
2017-10-24 17:48



Indentasi otomatis didasarkan pada mode sintaks saat ini. Saya tahu bahwa jika Anda mengedit Foo.java, maka masukkan a { dan memukul Memasukkan indent baris berikut.

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

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


7