vim menghapus trik mundur

119
  • Bagaimana cara menghapus satu kata ke kiri? Dengan kata lain, hapus kata saat kursor berdiri di ujungnya.
  • Bagaimana cara seseorang menghapus karakter ke awal baris?
  • Bagaimana cara menghapus whitespace pertama di sebelah kiri?

  • Adakah trik lain yang melibatkan penghapusan kata?

kendaraan
sumber

Jawaban:

163

Secara umum, d <motion> akan menghapus dari posisi saat ini ke posisi akhir setelah <motion>. Artinya:

  1. d <leftArrow> akan menghapus karakter saat ini dan kiri
  2. d $ akan menghapus dari posisi saat ini ke akhir baris
  3. d ^ akan menghapus dari karakter sebelumnya ke karakter non-spasi kosong pertama
  4. d0 akan menghapus dari mundur saat ini ke awal baris
  5. dw menghapus saat ini ke akhir kata saat ini (termasuk spasi tambahan)
  6. db menghapus saat ini ke awal kata saat ini

Baca ini untuk mempelajari semua hal yang dapat Anda gabungkan dengan perintah 'd'.

Lucas Oman
sumber
2
Pintasan praktis lainnya jika Anda merasa dbsulit untuk diingat: 5. dw or d<ctrl+rightarrow>dan 6. db or d<ctrl+leftarrow>
Crisboot
7
Daripada mengetik, d<leftArrow>lakukan dh, karena hadalah kunci untuk bergerak ke kiri
Dylanthepiguy
4
Mengapa jawaban ini diterima? d <leftArrow> (dan selain di bawah ini kecuali dw) tidak akan menghapus karakter di bawah kursor seperti yang diinginkan OP.
listerreg
73

Saya telah berada dalam skenario ini berkali-kali. Saya ingin menghilangkan semua spasi di baris 10 sehingga akan bergabung dengan baris 9 setelah koma.

masukkan deskripsi gambar di sini

Ini pada dasarnya adalah garis sederhana yang bergabung di VIM.

kJ melakukan triknya (lihat di bawah)

Vim Join Lines

Abdo
sumber
9
Saya telah mencari di mana-mana untuk ini!
functionvoid
2
haha, saya ingin ini dan saya tidak tahu bagaimana menjelaskannya di Google. Sangat beruntung bahwa saya menggulir ke bawah =))
Thai Tran
1
Tidak percaya berapa kali saya melakukan ini secara manual. Inilah yang saya cari, TERIMA KASIH!
tobiasandersen
1
inilah yang saya cari. Vim
mengejutkan
4
Penjelasannya adalah: k= Atas, J= Gabungkan garis di bawah ini dengan yang sekarang dengan satu spasi di antaranya. Anda juga bisa melakukan kgJuntuk bergabung tanpa spasi. gJ= Gabungkan garis di bawah tanpa spasi di antaranya. Melalui lembar contekan
KhalilRavanna
31

Untuk menjawab poin # 3, diwdan dawluar biasa.

Randy Morris
sumber
4
Saya merasa sedih bahwa tidak ada perintah dua karakter untuk menghapus kata mundur ketika Anda berada di huruf terakhir, karena di editor standar seperti notepad ++, gedit dll. Anda dapat dengan mudah menggunakan CTRL + Backspace ... kecuali dari itu vim sangat bagus.
itmuckel
3
@ roggan87 Jika Anda berada di huruf terakhir dari sebuah kata, dbhapus huruf yang mendahului huruf terakhir tapi masih menyisakan huruf terakhir.
Prashanth Chandra
2
Bisakah Anda menjelaskan apa yang dilakukan idan asedang dilakukan di tengah perintah tersebut? Saya tahu bahwa di depannya dadalah "hapus", dan saya kira di belakangnya wadalah "kata".
Carl G
1
@CarlG Penjelasan terbaik ada di :help text-objects. Paragraf terdepan sangat ringkas dan saya pikir menjelaskannya dengan sangat baik.
Randy Morris
5
<kbd> i </kbd> adalah "batin" dan <kbd> a </kbd> adalah "a", seperti dalam "sebuah kata". Yang pertama tidak akan menyertakan spasi kosong, sedangkan yang terakhir akan menyertakan spasi kosong, jika ada, jika tidak akan menyertakan spasi sebelumnya. Sangat membantu terima kasih.
Carl G
25

Dalam mode penyisipan:

  • ^ w
  • ^ u
  • tidak bisa menjawab dari kepalaku ;-)

Jika tidak:

  • dw
  • v0x
  • tidak bisa menjawab dari kepalaku ;-)
Michael Krelin - peretas
sumber
Saya tidak tahu bahwa saya dapat menghapus kata dalam mode Sisipkan di Vim. Ini sangat membantu.
Đỗ Tiến
18

Dalam mode perintah:

  1. bdw, kembali hapus kata.
  2. d^(ke non-kosong pertama), d0(ke karakter pertama)
  3. BdW (pergi ke whitespace pertama, hapus ke whitespace berikutnya)

(Wiki komunitas, silakan retas.)

zoul
sumber
14
  1. db (jika kursor berada setelah kata) atau bdw
  2. d0(atau d^jika Anda ingin menghapus ke karakter non-kosong pertama)
  3. dEatau dtSpaceuntuk menghapus ke spasi pertama atau d/\sEnteruntuk menghapus ke karakter spasi berikutnya.

Sunting

Karena pertanyaan telah diubah sehingga 3 adalah hapus ke karakter spasi putih pertama di sebelah kiri, jawaban saya harus berubah menjadi:

  1. dBatau dShiftTSpaceuntuk menghapus kembali ke spasi pertama atau d?\sEnteruntuk menghapus karakter spasi sebelumnya.

Lihat:

:help motion.txt
:help WORD
DrAl
sumber
Panggilan bagus di # 3. Saya tidak yakin bagaimana menangani spasi putih APA PUN. Perlu disebutkan bahwa dF <SPACE> akan menghapus hingga dan termasuk <SPACE> sementara dT <SPACE> akan meninggalkan <SPACE> di sana.
Mark Biek
Datang ke sini mencari sesuatu seperti bdw. Karakter yang tersisa (yang awalnya di bawah kursor) dbterus mengganggu saya.
Deiwin
8

Saya merasa tidak ada jawaban yang lengkap:

Secara umum, Anda biasanya memulai operasi penghapusan menggunakan d<motion> , dan jarang menggunakan x.

Catatan: Kapan N tidak ditentukan, berperilaku seolah-olah N=1(menghapus satu karakter)

Karakter diskrit:

<N>x - Hapus karakter N di sebelah kanan

d<N><left-arrow> - Hapus karakter N ke kiri

d<N><right-arrow> - Hapus karakter N di sebelah kanan

Batas kata:

Catatan: Kata pertama sebelum / sesudahnya adalah kata yang berada di bawah kursor

d<N>b - Hapus dari awal kata ke-N sebelumnya ke posisi saat ini

d<N>e - Hapus dari posisi saat ini hingga akhir kata ke-N berikutnya

d<N>w- Sama seperti d<N>etetapi menyertakan spasi kosong

diw - Hapus seluruh kata di bawah kursor

daw- Sama seperti diwtetapi menyertakan spasi kosong

Batas garis:

d0 - Hapus dari awal baris ke posisi saat ini

d^ - Hapus dari karakter non-spasi pertama ke posisi saat ini

d$ - Hapus dari posisi saat ini hingga akhir baris

Daniel Trugman
sumber
1

/ <CR>x

(cari spasi, tekan enter untuk pergi ke sana, x untuk menghapus)

Mungkin ada cara yang lebih ajaib untuk melakukannya, tapi saya tidak tahu satu pun.

brettkelly
sumber
Jika Anda ingin menghapus spasi kosong pertama di sebelah kiri, tekan? alih-alih / dalam contoh saya.
brettkelly