Bagaimana cara menghapus sampai akhir baris sebelumnya?

8

Contoh (Ini ^adalah posisi kursor):

Sebelum:

a bc def ghi
j k l mn o p q rs
      ^

Setelah:

a bc def ghimn o p q rs
            ^

atau setidaknya:

a bc def ghimn o p q rs
           ^

Saya tahu saya bisa menggunakan d0i<BS>, tetapi saya ingin cara yang lebih cepat untuk melakukan ini dan saya ingin tetap dalam mode perintah. Saya seorang pemula di vim dan saya pikir mungkin jawabannya adalah modifikasi kA.

Terima kasih banyak! :-)

silviubogan
sumber
1
Jika ini adalah sesuatu yang sering Anda lakukan, Anda harus mempertimbangkan menulis pemetaan Anda sendiri untuk itu, mungkin sesuatu seperti <Leader>dk.
Kyle Strand

Jawaban:

9

Mencoba d0kJx

Menghapus mundur ke awal garis, bergerak ke atas, lalu bergabung dengan dua garis dan kemudian menghapus ruang di antara dua garis yang bergabung.

Anda tidak harus meninggalkan mode normal dengan ini.

Bryan Glazer
sumber
2
Ini adalah satu-satunya jawaban sejauh ini (1) tidak mengubah riwayat pencarian atau mengubah penyorotan saat ini dan (2) tidak menghapus m.
Kyle Strand
12

Nah, Anda dapat menggabungkan gerakan "pencarian mundur" dan deleteoperator:

d?$<Enter>
VanLaser
sumber
Di .vimrc saya memiliki ini: set hlsearchdan d?$<Enter>melakukan apa yang saya minta tetapi juga menyoroti semua akhiran baris dalam file jadi saya harus mengetik :nohsetelah itu untuk menghapus highlight. Apakah ada cara untuk menghindari ini? Terima kasih! :-)
silviubogan
1
Mungkin ada, apa yang saya lakukan hanyalah "kelebihan" <C-l>dalam mode normal:, nnoremap <silent><C-l> :nohlsearch<cr>:set nolist<cr>:redraw!<cr>kemudian gunakan ketika diperlukan (yaitu dalam kasus seperti di atas).
VanLaser
3

Dengan mode visual: hvk$d

Penjelasan
h - Pindahkan satu ke kiri
v- Mulai mode visual
k$- Pindah ke akhir baris sebelumnya
d- Hapus pilihan

Karl Yngve Lervåg
sumber
Dengan kursor aktif m, mungkin hvk$d? (untuk menghindari memilihnya)
VanLaser
1
Ah iya. Memperbarui sekarang.
Karl Yngve Lervåg