Satu-satunya alasan mengapa saya pernah mengedit file teks di Pico atau Nano, dan tidak di Vim adalah perintah "Justify" -nya ^J. Ini akan memformat ulang paragraf teks, membuat jeda baris saat jeda kata sehingga teks akan mengapung di layar lebar tetap dengan baik - memformat teks agar sesuai dengan 80 kolom yang telah ditetapkan, membuat jeda baris hanya antara kata-kata. Sebagai fungsi terbatas, itu sangat berguna, apakah untuk memformat blok komentar yang panjang, file dokumentasi, atau hanya mengganti baris parameter tanpa akhir dengan sesuatu yang lebih mudah dibaca.
Bisakah saya melakukan sesuatu seperti itu di Vim?
'formatprg'
opsi.Ada VimCast yang hebat tentang topik ini.
http://vimcasts.org/episodes/formatting-text-with-par/
Pada dasarnya, Anda perlu menginstal
par
:Dan kemudian, karena Anda ingin kolom dibungkus dalam 80 kolom:
Sekarang Anda dapat menggunakan
gq
operator, seperti dalam jawaban lain (mis.gqip
), Dan ia akan menggunakan Par sebagai ganti formatter bawaan Vim.Par cukup maju, dan itu akan memformat komentar seperti ini dengan baik:
sumber
Dari
:help usr_25
:Jadi, yang harus Anda lakukan adalah menjalankan
lalu ketik
untuk membenarkan teks di seluruh file.
(Tentu saja, Anda juga bisa menambahkan
ru macros/justify.vim
.vimrc Anda sehingga Anda tidak perlu mengetiknya setiap waktu.)Catatan : ini tidak menambah jeda baris untuk Anda. Anda harus menambahkannya secara manual
gq
. Untuk ini, Anda juga harus mengaturtextwidth
(defaultnya adalah 0) ke nilai yang Anda inginkan viadan — jika Anda mau — pembungkus teks otomatis dengan mengatur
t
-flag viaJika mau, Anda dapat mengatur pemetaan di .vimrc Anda untuk melakukan semuanya untuk Anda:
Ini pindah ke awal file (
gg
), membungkus semua baris (gq
sampaiG
), dan kemudian_j
ustifies teks.sumber
:set fo+=a
untuk memformat ulang seluruh paragraf secara otomatis. Lihat:help fo-table
opsi lain. Ada juga tutorial video yang bagus di sini ._j
pemetaan ditambah makro tampaknya membenarkan seluruh file untuk saya, atau dapat dibatasi dengan linewise seleksi visual.Sementara bantuan nano memanggil
^J
perintah "Justify" itu sebenarnya tidak membenarkan teks, itu memformat ulang teks yang melanggar garis sebelum margin kanan layar (atau di beberapa kolom yang dapat dikonfigurasi, saya kira).Anda dapat melakukan hal yang sama di VIM dengan mengatur variabel
textwidth
, dari:help 'textwidth'
:Artinya: saat Anda mengetik, jika garis lebih panjang dari
textwidth
karakter, VIM akan membungkus garis di ruang pertama untuk menjaga panjang garis kurang atau sama dengantextwidth
.Agar ini berfungsi, opsi
formatoptions
harus mengandung surat itut
. Lihat:help 'formatoptions'
dan:help fo-table
untuk opsi yang tersedia, misalnya Anda mungkin tertarik padac
opsi untuk membuat pemformatan berfungsi dengan komentar.Mengedit : Anda dapat melakukan operasi yang sama, tanpa perlu dimasukkan
t
dalamformatoptions
, menggunakan perintahgw{motion}
, itu format teks antara posisi kursor saat ini dan posisi kursor setelah{motion}
. Thegw
perintah yang tersedia juga dalam mode visual, format teks yang dipilih.sumber
Berikut adalah dua opsi mudah:
!fmt
!}fmt
Keduanya mengirim blok teks ke unix
fmt
, lihatman fmt
opsi. Anda bisa memberikan argumen opsi dari vim. Misalnya, untuk memformat blok dengan lebar 50 karakter, ketik!}fmt -w 50
.sumber
:%!fmt
dan membatalkan dengan satuu
jika Anda tidak suka hasilnya.Tandai teks menggunakan perintah visual dan kemudian gunakan:
di mana 40 adalah lebar kolom dan
j
berarti membenarkan.sumber
par
) dan mengapa solusi Anda berfungsi. Anda mungkin ingin menambahkan lebih banyak detail untuk meningkatkan kualitas jawaban Anda dan menjadikannya lebih bermanfaat bagi pembaca di masa mendatang.