Bagaimana saya bisa secara otomatis membuat indentasi pada baris baru?

15

Saya mengerjakan proyek-proyek dengan berbagai tingkat indentasi. Dalam banyak proyek ini, karena bagaimana file biasanya terstruktur, sebagian besar baris diberi indentasi setidaknya dua tingkat (seperti metode dalam file Java).

Ini berarti bahwa membuat garis baru ketika di garis

public void something () {

Akan membawa kursor saya ke baris berikutnya, otomatis dimasukkan, seperti

public void something () {
    [cursor]

Sementara saya dapat menekan tombol tab beberapa kali pada baris baru untuk membuatnya berbaris, apakah ada cara yang lebih baik untuk melakukan ini (mungkin secara otomatis)?

Kevin Brown
sumber

Jawaban:

11

Ini dapat dilakukan dengan menggunakan kombinasi autoindentopsi dan filetypeplugin.

The autoindentpilihan akan menyalin lekukan Anda saat ini saat membuat baris baru. Jadi jika level indentasi Anda saat ini adalah 4 ketika Anda memulai baris baru, kursor akan dipindahkan ke level indentasi yang sama pada baris berikutnya.

Dalam ~/.vimrcfile Anda, Anda akan meletakkannya

set autoindent

Anda dapat menggunakan filetypeplugin juga untuk secara otomatis menentukan tingkat lekukan berikutnya berdasarkan jenis file.

Anda dapat mengaktifkan ini dengan cepat

:filetype indent on

Atau, dalam ~/.vimrcfile Anda, Anda akan meletakkan

filetype plugin indent on

Yang secara otomatis akan menentukan lekukan berdasarkan jenis file.

Kevin Brown
sumber
6

Gunakan :set cindent( :set cinsingkatnya) atau :set smartindent( :set sisingkatnya). Jika garis Anda berakhir dengan penjepit pembuka, dan Anda menekan Enter, baris berikut akan secara otomatis di-indentasi satu level tambahan. (Ini lebih baik daripada :set autoindent, yang hanya membuat indentasi baris berikutnya pada level yang sama .) Lebih cindentbaik disesuaikan dengan bahasa mirip-C, sementara smartindentlebih fleksibel untuk digunakan dengan bahasa pemrograman lain.

Jumlah dan jenis lekukan dikendalikan oleh :set shiftwidth=…, :set tabstop=…, dan :set expandtab.

200_sukses
sumber
'smartindent'sudah usang, jadi itu bukan pilihan terbaik. Itu telah digantikan oleh 'cindent'dan 'cinoptions'untuk bahasa seperti C. Secara umum, jenis file indentasi adalah cara yang harus dilakukan, dengan 'autoindent'sebagai mundur.
jamessan
@jamessan smartindenttidak ditinggalkan, tetapi cindentpatut dicatat. Saya sudah memperbarui jawabannya. (Terima kasih!)
200_success
Saya juga merekomendasikan Anda melihat editorconfig.org . Tentu saja ada plugin untuk vim (dan banyak editor lainnya) dan ini adalah cara yang bagus untuk menjaga default editor Anda di VCS Anda
Cyber ​​Oliveira
0

Di bagian bawah file, saya menggunakan:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Sebagai contoh Dockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Jika Anda ingin menyimpan lekukan saja, gunakan # vim: st ai si

Eduardo Cuomo
sumber