Apakah ada cara untuk menghapus baris baru di akhir baris di Vim, sehingga baris berikutnya ditambahkan ke baris saat ini?
Sebagai contoh:
Evaluator<T>():
_bestPos(){
}
Saya ingin meletakkan ini semua dalam satu baris tanpa menyalin garis dan menempelkannya ke yang sebelumnya. Sepertinya saya harus bisa meletakkan kursor ke akhir setiap baris, tekan tombol, dan lompati baris berikutnya ke kursor yang sama.
Hasil akhir:
Evaluator<T>(): _bestPos(){ }
Apakah ini mungkin di Vim?
Jawaban:
Jika Anda berada di baris pertama, menekan (huruf besar) Jakan bergabung dengan baris itu dan baris berikutnya bersama-sama, menghapus baris baru. Anda juga dapat menggabungkan ini dengan hitungan, jadi menekan
3J
akan menggabungkan ketiga garis menjadi satu.sumber
gJ
akan menghindari menambahkan ruang yang Vim dapat memilih untuk add ketika menggunakanJ
.V
(Mode Jalur Visual) kemudian tekanJ
ataugJ
:join
dan:join!
yang akan bergabung dengan garis menjaga posisi kursor dan tidak menyimpan ruang di titik bergabung. Anda juga dapat memetakannya seperti:nnoremap <Leader>j :joing<cr>
dannnoremap <Leader>gj :join!<cr>
.Pasti. Vim mengenali karakter \ n sebagai baris baru, jadi Anda bisa mencari dan mengganti. Dalam jenis mode perintah:
sumber
V
blok -isual dan menggantinya.Saat berada di baris atas dalam mode normal, tekan Shift+ j.
Anda juga dapat menghitung awal hitungan, sehingga
3J
pada baris paling atas akan menggabungkan semua garis tersebut bersama-sama.sumber
Seperti jawaban lain yang disebutkan, (huruf besar)
J
dan cari + ganti untuk\n
dapat digunakan secara umum untuk menghapus karakter baris baru dan untuk menyatukan baris.Tetapi untuk menyingkirkan karakter baris baru di baris terakhir , Anda perlu melakukan ini di Vim:
sumber
:set noendofline
tidak bekerja tanpanyabinary
?J
menghapus spasi memimpin tambahan (jika ada), bergabung dengan garis dengan satu spasi. (Dengan beberapa pengecualian: setelah/[.!?]$/
, dua spasi dapat dimasukkan; sebelum/^\s*)/
, tidak ada spasi yang dimasukkan.)Jika Anda tidak menginginkan perilaku itu,
gJ
cukup hapus baris baru dan tidak melakukan apa pun yang cerdas dengan spasi sama sekali.sumber
Semua yang berikut menganggap bahwa kursor Anda ada di baris pertama:
Menggunakan pemetaan normal:
3Shift+J
Menggunakan perintah Ex:
Yang merupakan singkatan dari
Yang juga bisa dimasukkan dengan cara pintas berikut:
3:j
Perintah Ex yang lebih pendek:
sumber
:j!3
di Vimrc Anda akan memungkinkan Anda untuk menggunakan
backspace
dandelete
pada\n
(newline) dalam mode insert.akan memungkinkan Anda untuk menghapus LF sebelumnya dalam mode normal dengan
X
(ketika dalam kolom 1).sumber
Mungkin tergantung pada pengaturan Anda, tetapi saya biasanya melakukan ini dengan
A<delete>
Di mana
A
ditambahkan di akhir baris. Mungkin membutuhkannocompatible
mode :)sumber
kursor di baris pertama
SEKARANG, dalam MODE NORMAL lakukan
atau
: V2jJ normal
sumber
Saya hanya akan menekan A (tambahkan ke akhir baris, menempatkan Anda ke dalam mode penyisipan) pada baris di mana Anda ingin menghapus baris baru dan kemudian tekan hapus.
sumber
:help 'backspace'
jika Anda tidak keberatan menggunakan alat shell lainnya,
sumber
ggVGJ
.Masalahnya adalah bahwa kelipatan karakter 0A (\ n) yang tidak terlihat dapat menumpuk. Andaikan Anda ingin membersihkan dari baris 100 sampai akhir:
Mengetik ESC dan: (komandan terminal)
Dalam skrip vim:
Penjelasan: dari 110 hingga akhir mencari baris yang dimulai dengan baris baru (kosong) dan menghapusnya
sumber