Operasi yang cukup umum bagi saya di vim, karena saya kompulsif-obsesif dan ingin menjaga file saya bebas dari spasi, adalah untuk menghapus isi dari seluruh baris, tetapi bukan baris itu sendiri (yaitu bukan pemecah baris).
Apakah ada cara vim bawaan untuk melakukan ini? Mungkin d<movement command>
operasi?
Sejauh ini, yang terbaik yang saya miliki adalah (di telepon) 0d$. Apakah ada cara yang lebih cepat?
key-bindings
cursor-movement
Andrew Ferrier
sumber
sumber
:%s/\s*$//
Jawaban:
Anda dapat menggunakan
0D
ini akan pergi ke karakter pertama di baris dan menghapus sampai akhir baris. Perhatikan bahwa Anda dapat menggunakan^D
jika Anda ingin meninggalkan spasi kosong sebelumnya. Juga, operasi ini tidak dapat diulang dengan menggunakan.
. Jika Anda menginginkan operasi yang dapat diulangi dengan.
perintah, lihat jawaban David Lord.Topik-Topik Bantuan:
:help 0
:help D
:help ^
sumber
.
perintah. Untuk alasan itu, saya pikircc<Esc>
atauS<Esc>
lebih menarik jika Anda ingin mengulangi..
..
. Mereka bekerja seolah-olah penekanan tombol itu dimasukkan secara interaktif, sehingga perintah individu diperlakukan secara terpisah. Menggunakan.
hanya akan mengulangi perintah terakhir di makro.@{reg}
, Anda dapat mengulanginya dengan.
sesudahnya.D
. Setelah0D
operasi, kursor Anda akan ditinggalkan di kolom 0. Jika kursor Anda sudah berada di awal baris (setelah Anda pindah ke yang lain), itu akan terlihat seperti makro diulang dengan benar. Coba gerakkan kursor ke depan dalam barisan dan ketikkan.
- Anda akan melihat bahwa kursor hanya akan berulangD
.cc <Esc>
akan melakukan apa yang Anda minta, tetapi lebih banyak penekanan tombol daripada0D
. Jika Anda ingin memasukkan sesuatu ke dalam garis itu sesudahnya,cc
mungkin yang terbaik.sumber
.
perintah. Sebaliknya,0D
(seperti yang disarankan dalam jawaban yang dipilih) adalah dua tindakan:0
gerak danD
perintah.0D
bagi saya karena saya telahjk
memetakannya<Esc>
di vimrc saya, jadi tangan saya bahkan tidak harus meninggalkan barisan rumah.S
didokumentasikan sebagai "Sinonim untukcc
"S
dan kemudianCtrl+C
atauEsc
tampaknya mencapai fungsi yang sama persis.Kemudian dapat diulang dengan
.
karena merupakan tindakan tunggal.sumber
0D
mungkin itu yang Anda inginkan. Ini akan menghapus dari kursor ke akhir baris sambil meninggalkan garis (dan karakter apa pun sebelum kursor) di tempatnya.sumber
0D
akan dihapus dari awal baris , bukan dari posisi kursorSaya biasanya menggunakan
ddO
.dd
untuk menghapus baris saat ini, danO
(itu adalah modal besar) untuk menambahkan baris baru.Ini juga 3 penekanan tombol, tetapi
dd
hanya dihitung sebagai 1 setengah, dan saya menemukanO
lebih mudah untuk mengetik daripada$
.Ini berbeda dari
0D
solusi karena indentasi otomatis, misalnya dengan kode ini (di mana!···
ada tab, dan █ kursor:0D
akan meninggalkan Anda dengan:Dan
ddO
akan meninggalkan Anda dengan:Dan jika Anda menekan
<Esc>
segera setelah ini, Vim harus menghapus lekukan-otomatis, sehingga Anda memiliki yang sama dengan0D
.Tidak ada cara yang 'benar', itu akan tergantung pada apa yang ingin Anda lakukan. Saya lebih suka
ddO
karena lebih fleksibel, dan karena itu "di jari saya" :-)sumber
^D
akan meninggalkan spasi putih sendiri.O
membuat Anda dalam mode penyisipan, ini setara dengancc
, kecuali tanpa indentasi otomatis .... kecuali jika saluran Anda sudah diindentasi otomatis.Dan untuk menyimpan satu stroke key berharga yang dapat Anda gunakan
0C
yang akan menghapus semua karakter pada baris saat ini dan menempatkan Anda ke mode insert.sumber