Dalam Vim, apa perintah untuk memperbaiki indentasi semua baris?
Sering kali saya akan menyalin dan menempelkan kode ke terminal jarak jauh dan semuanya kacau. Saya ingin memperbaiki ini dalam satu gerakan.
Dalam Vim, apa perintah untuk memperbaiki indentasi semua baris?
Sering kali saya akan menyalin dan menempelkan kode ke terminal jarak jauh dan semuanya kacau. Saya ingin memperbaiki ini dalam satu gerakan.
Jawaban:
=
, perintah indent dapat mengambil gerakan. Jadi, gg
untuk memulai file, =
indentasi, G
hingga akhir file gg=G
,.
''
(dua tanda kutip tunggal) membawa Anda kembali ke tempat Anda gg=G''
semestinya jadi harus indentasi kemudian kembali.
Sebelum menempel ke terminal, coba :set paste
dan :set nopaste
setelah selesai. Ini akan mematikan indentasi otomatis, pembungkus baris, dan fitur lain yang mengacaukan tempel Anda.
sunting: Juga, saya harus menunjukkan bahwa hasil yang jauh lebih baik daripada =
indentasi biasanya dapat diperoleh dengan menggunakan program eksternal. Sebagai contoh, saya menjalankan :%!perltidy
semua waktu. astyle
,, cindent
dll. juga dapat digunakan. Dan, tentu saja, Anda dapat memetakannya ke stroke kunci, dan memetakan yang berbeda keystroke yang sama tergantung pada jenis file.
equalprg
opsi di ftplugin untuk menggunakan filter eksternal untuk =
indentasi, daripada pengikatan tombol khusus.
formatpgm
dengan rapi dan astyle dan kemudian gq
. Berikut adalah beberapa contoh dari saya .vimrc
: au FileType xml set fp=tidy\ -q\ -i\ -xml
danau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Jika Anda ingin mengaktifkan kembali blok tempat Anda berada tanpa harus mengetik akord apa pun, Anda dapat melakukannya:
[[=]]
=aB
kursor yang tidak akan bergerak sama sekali.
[[=]]
dibutuhkan 5 akor :(
Tuan dari semua perintah adalah
gg=G
Ini indentasi seluruh file!
Dan di bawah ini adalah beberapa perintah sederhana dan elegan yang digunakan untuk membuat garis cepat di Vim atau gVim.
Untuk membuat indentasi semua baris di bawah baris saat ini
=G
Untuk indentasi baris saat ini
==
Untuk membuat n
garis di bawah garis saat ini
n==
Misalnya, untuk membuat indentasi 4 baris di bawah baris saat ini
4==
Untuk membuat indentasi blok kode, buka salah satu kawat gigi dan gunakan perintah
=%
Anda dapat menggunakan aplikasi / utilitas yang rapi untuk membuat indentasi file HTML & XML dan ini berfungsi cukup baik dalam indentasi file tersebut.
Prettify file XML
:!tidy -mi -xml %
Prettify file HTML
:!tidy -mi -html %
tekan escape dan kemudian ketikkan kombinasi di bawah ini dengan cepat:
gg=G
1G=G
. Itu harus membuat indentasi semua baris dalam file. 1G
membawakan Anda baris pertama, =
akan memulai indentasi otomatis dan final G
akan membawa Anda baris terakhir dalam file.
1gg=G
Di Vim, gunakan :insert
. Ini akan menjaga semua format Anda dan tidak melakukan indentifikasi otomatis. Untuk informasi lebih lanjut help :insert
.
vim-autoformat memformat file sumber Anda menggunakan program eksternal khusus untuk bahasa Anda, mis. permata "rbeautify" untuk file Ruby, paket "js-beautify" npm untuk JavaScript.
Untuk file C ++ yang kompleks, vim tidak selalu mendapatkan pemformatan yang benar saat menggunakan =
perintah filter vim . Jadi untuk situasi seperti itu, lebih baik menggunakan formatter C ++ eksternal seperti astyle (atau tidak bisa dipercaya ) misalnya:
:%!astyle
Fungsi Vim '=' menggunakan formatter internal secara default (yang tidak selalu membuat segalanya menjadi benar) tetapi kita juga dapat mengaturnya menggunakan formatter eksternal, seperti astyle, dengan mengaturnya dengan tepat seperti yang dibahas dalam pertanyaan ini .
Untuk file XML, saya menggunakan perintah ini
:1,$!xmllint --format --recover - 2>/dev/null
Anda perlu menginstal xmllint (package libxml2-utils)
(Sumber: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
Anda dapat membuat pemetaan untuk melakukan ini untuk Anda.
Yang ini akan membuat indentasi keseluruhan file dan tetap menjaga kursor Anda di posisi Anda:
nmap <leader>ai mzgg=G`z
Untuk vi Editor, gunakan: masukkan. Ini akan menjaga semua pemformatan Anda dan tidak memasukkan indentasi otomatis. Setelah selesai tekan escape untuk melihat file yang diformat yang sebenarnya jika tidak, Anda akan melihat beberapa karakter sampah. seperti ^ I eg:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Masuk saja ke mode visual dalam vim, dan pilih dari atas ke bawah setelah memilih cukup tekan =, Semua baris yang dipilih akan indentasi.
ggvG=
kalau bisa gg=G
. Apa gunanya membuat gerakan itu terlihat? Itu berlaku untuk semua tindakan yang mengambil gerakan.