Ketika saya menyalin kode dari file lain, pemformatan kacau, seperti ini:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Bagaimana saya bisa mengatur otomatis kode ini dalam vim?
c
vim
code-formatting
Yongwei Xing
sumber
sumber
Jawaban:
Coba penekanan tombol berikut:
Penjelasan:
gg
pergi ke bagian atas file,=
adalah perintah untuk memperbaiki lekukan danG
menyuruhnya untuk melakukan operasi hingga akhir file.sumber
Saya suka menggunakan program Artistic Style. Menurut situs web mereka :
Ini berjalan di Window, Linux dan Mac. Ini akan melakukan hal-hal seperti indentasi, mengganti tab dengan spasi atau sebaliknya, menempatkan ruang di sekitar operasi sesuka Anda (mengkonversi
if(x<2)
ke jika( x<2 )
jika itu yang Anda suka), meletakkan kawat gigi pada baris yang sama dengan definisi fungsi, atau memindahkannya ke baris di bawah, dll. Semua opsi dikontrol oleh parameter baris perintah.Untuk menggunakannya dalam vim, cukup atur opsi formatprg ke sana, dan kemudian gunakan perintah gq. Jadi, misalnya, saya miliki di .vimrc saya:
sehingga setiap kali saya membuka file .cpp, formatprg diatur dengan opsi yang saya suka. Lalu, saya bisa mengetikkan gg untuk pergi ke bagian atas file, dan gqGmemformat seluruh file sesuai dengan standar saya. Jika saya hanya perlu memformat ulang fungsi tunggal, saya bisa pergi ke atas fungsi, lalu ketik gq][dan itu akan memformat ulang fungsi itu saja.
Opsi yang saya miliki untuk astyle,,
-T4pb
hanyalah preferensi saya. Anda dapat melihat dokumen mereka , dan mengubah opsi untuk memformat kode sesuka Anda.Ini demo. Sebelum astyle:
Setelah astyle (gggqG):
Semoga itu bisa membantu.
sumber
Perintah builtin untuk indentasi kode dengan benar telah disebutkan (
gg=G
). Jika Anda ingin mempercantik kode, Anda harus menggunakan aplikasi eksternal seperti indent . Karena%
menunjukkan file saat ini dalam mode ex, Anda dapat menggunakannya seperti ini:sumber
Plugin vim-autoformat memungkinkan Anda memformat buffer Anda (atau pilihan buffer) dengan satu perintah: https://github.com/Chiel92/vim-autoformat . Ini menggunakan program format eksternal untuk itu, dengan fungsi indentasi fallback to vim.
sumber
Saya menemukan itu
clang-format
bekerja dengan baik.Ada beberapa contoh ikatan kunci dalam dokumentasi dentang
Saya lebih suka menggunakan
equalprg
binding di vim. Hal ini memungkinkan Anda untuk memohonclang-format
denganG=gg
atau lainnya=
pilihan indent.Masukkan saja berikut ini di file .vimrc Anda:
sumber
sudo apt install clang-format
Mungkin Anda bisa mencoba yang berikut ini $ indent -kr -i8 * .c
Semoga bermanfaat bagi Anda!
sumber
Saya suka
indent
seperti yang disebutkan di atas, tetapi paling sering saya ingin memformat hanya sebagian kecil dari file yang sedang saya kerjakan. Karenaindent
dapat mengambil kode dari stdin, ini sangat sederhana::!indent
.astyle
Dibutuhkan stdin juga, sehingga Anda dapat menggunakan trik yang sama di sana.sumber
Saya ingin menambahkan, bahwa untuk mencegahnya tidak berantakan, Anda dapat mengetik
:set paste
sebelum menempel. Setelah menempel, Anda dapat mengetik:set nopaste
untuk hal-hal seperti js-beautify dan indentasi untuk bekerja lagi.sumber
:set paste!
ini, yang mengubah nilai tempel alih-alih mengaturnya. Ini membuatnya lebih mudah untuk dimatikan karena Anda dapat dengan mudah menggulir kembali beberapa perintah dan tekan enter.Mereka adalah alat yang disebut
indent
. Anda dapat mengunduhnya denganapt-get install indent
, lalu jalankanindent my_program.c
.sumber