The gJ
Kombinasi hal ini; dari :help gJ
:
Bergabunglah dengan [hitung] baris, dengan minimal dua baris. Jangan masukkan atau hapus spasi apa pun.
Anda dapat mengubahnya menjadi ulang J
, jika Anda ingin menyimpan penekanan tombol:
:nnoremap J gJ
Perhatikan bahwa ini tidak menghapus spasi apa pun, jadi jika baris saat ini berakhir dengan spasi atau baris berikutnya dimulai dengan satu atau lebih spasi, mereka akan dibiarkan apa adanya .
Begitu:
Hello
world
Menjadi:
Hello world
Kita bisa menggunakan Jx
dalam kasus ini, maka itu akan terjadi Helloworld
, tetapi itu tidak akan berhasil dalam semua kasus; dari bantuan:
Bergabunglah dengan garis yang disorot, dengan minimal dua garis. Hapus indentasi dan masukkan hingga dua spasi
[...]
Perintah-perintah ini, kecuali "gJ", menyisipkan satu spasi di tempat dari kecuali ada spasi putih tambahan atau baris berikutnya dimulai dengan a ')'.
Jadi dalam beberapa kasus lebih dari satu ruang atau tidak ada ruang yang dimasukkan. Sejauh yang saya bisa lihat, tidak ada cara mudah untuk mengubah perilaku ini; Saya membuat fungsi untuk dimodifikasi gJ
agar selalu bergabung tanpa spasi:
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
Lihat juga: :help J
,:help 'joinspaces'
Trik lain yang dapat Anda coba adalah menggunakan penggantian. Terkadang ini mungkin berguna.
Skenario: Hapus karakter terakhir dan gabung dengan baris berikutnya:
Sebagai contoh,
menjadi:
sumber
Buat makro dan gunakan kembali:
qaJxq
Sekarang putar ulang makro,
a
dengan menggunakan di @amana pun Anda ingin bergabung dengan dua baris tanpa spasi.@@akan mengulangi makro sebelumnya. Jadi Anda bisa tahan @untuk bergabung dengan beberapa baris.
sumber
@a
ketika Anda bisa mengetikJx
? Jumlah penekanan tombol dan penekanan SHIFT yang sama!3@a
untuk bergabung dengan 3 baris, sedangkan melakukan3Jx
akan bergabung dengan 3 baris dengan spasi dan kemudian menghapus spasi antara baris kedua dan ketiga, meninggalkan spasi di antara baris lainnya.Untuk selalu bergabung dengan satu ruang:
Untuk bergabung tanpa spasi sama sekali (menghilangkan trailing + ruang terdepan):
sumber
Pilih garis yang ingin Anda gabungkan, masukkan perintah Ex dengan mengetikkan titik dua
:
dalam mode normal. Kemudian ketik perintah ini:s/$\n\s*//gc
Seluruh perintah harus terlihat juga:
:'<,'>s/$\n\s*//gc
Penjelasan:
'<,'>
berarti kami hanya memodifikasi garis yang dipilih dalam mode visual./$\n\s*
adalah pola regex . Kami mencari kecocokan yang diakhiri$
dengan karakter garis baru\n
dan*
setelahnya memiliki jumlah spasi putih yang tidak ditentukan .s/pattern//gc
adalah perintah pengganti untuk menemukan setiap pola dan menggantinya dengan karakter kosong pada konfirmasi.sumber