Misalkan Anda telah mengetik dokumen panjang dalam vim dengan garis otomatis terputus, sehingga semua baris telah rusak, katakanlah, 79 karakter. Anda bahkan mungkin telah menerapkan pemformatan ke seluruh dokumen untuk memecah semua garis pada panjang itu.
Paragraf dibatasi dalam dokumen Anda dengan baris kosong.
Sekarang Anda memutuskan untuk tidak ingin jeda baris dalam paragraf sama sekali.
Bagaimana Anda bisa menghapus semua jeda baris dalam paragraf tanpa menghilangkan batas paragraf sama sekali?
Saya telah melakukan peretasan yang cepat dan konyol ini, tetapi saya sedang mencari cara yang tepat.
:%s/^\s*$/@@@@@ - replace blank lines with @@@@@
ggVGgJ - join all lines in the file
:%s/@@@@@/\r\r/g - replace @@@@@ with line breaks
vim
newlines
carriage-return
dggoldst
sumber
sumber
Jawaban:
Saya pikir ini sesuai keinginan Anda: pastikan ada baris kosong di akhir file, lalu gabung setiap paragraf (diakhiri oleh baris kosong).
Penjelasan: pertama pergi ke akhir file dan menambahkan baris kosong tambahan dengan
:a
(mungkin ada cara yang lebih elegan untuk melakukan itu; secara interaktif, Anda dapat mengganti tiga baris pertama dengano<ESC>
). Kemudian, untuk setiap baris non-kosong yang belum dianggap (:g/^./
), terapkanjoin
perintah ke rentang mulai dari baris yang dipilih (.
) dan akhiri satu baris sebelum baris kosong berikutnya (/^$/-1
).Secara opsional,
:g/^$/d
jika Anda tidak ingin baris kosong tetap ada (maka Anda dapat melepasnya-1
).sumber
:g
, yang menerapkan perintah ke semua baris yang cocok; lihat:help :g
dan mungkin utas ini tentang bagaimana:g
berperilaku ketika Anda menghapus jeda baris .:$pu _
di akhir letakkan register lubang hitam, yang menghasilkan garis kosong di bagian akhir.Ini harus dilakukan:
tw
diatur ke beberapa nilai setidaknya sebesar jumlah karakter dalam paragraf terpanjang.gg
memindahkan kursor ke baris pertama;gq
adalah perintah untuk memformat ulang;G
memindahkan kursor ke baris terakhir, memberitahukangq
untuk memformat ulang dari lokasi kursor saat ini ke baris terakhir.sumber
Atur kursor di dalam paragraf yang diinginkan
Tipe:
vipJ
(
vip
menyoroti paragraf saat ini,J
bergabung dengan semua baris)sumber
Mungkin bukan cara paling bersih untuk melakukannya, tapi inilah yang akan saya gunakan:
( Bekerja di VIM 7.2. )
Bergantung pada bagaimana paragraf dipisah ketika mereka awalnya diformat, Anda mungkin ingin mengganti
gJ
perintah (gabung tanpa spasi) denganJ
perintah (gabung dengan spasi).999
Hitungan sewenang-wenang hanya perlu setidaknya jumlah paragraf dalam file - Anda dapat memilih nomor yang lebih besar jika Anda ingin dan tidak kehilangan apa pun kecuali siklus prosesor. Dengan asumsi satu dan hanya satu baris kosong antara paragraf, Anda bisa mendapatkan penghitungan paragraf yang lebih akurat menggunakan:sumber