Saya sekarang beralih ke VIM
dari TextMate. Saya menemukan ^+W
dalam mode INSERT sangat berguna. Namun, saya ingin menghapus tidak hanya kata sebelum kursor, tetapi kata setelah atau sekitar kursor juga.
Saya melakukan beberapa pencarian di Google, tetapi satu-satunya hal yang dapat saya temukan adalah ^+W
menghapus kata SEBELUM kursor.
vim
keyboard-shortcuts
Mantra
sumber
sumber
imap <C-d> <C-o>diw
berfungsi juga. Itu juga tidak membuat titik undo, yang <Esc> hampir selalu terjadi.Mode normal:
sumber
da)
danci)
tetapi tidak pernah memikirkan hal ini!.vimrc
file saya seperti ini:nmap <Leader>d daw
dannmap <Leader>c caw
aw
adalah salah satu contoh pemilihan objek. Anda dapat mencoba pemilihan objek dalam mode visual untuk melihat efek apa yang mereka miliki: vimdoc.sourceforge.net/htmldoc/motion.html#object-selectSaya pikir itu adil
daw
sumber
a
perintah untukAppend text after the cursor [count] times.
tetapi bagaimana caradaw
kerjanya?d
menentukan Anda akan 'menghapus'. The 'a' adalah sejenis parameter, yang menetapkan bahwa penghapusan harus menyertakan pembatas. Akhirnya 'w', yang lainparameter
-jika Anda mau- menentukan bahwa suatuword
unit akan dihapus.dw
dandaw
?dw
akan menghapus dari kursor ke akhir kata, sementaradaw
akan menghapus seluruh kata bersama dengan spasi.diw
akan menghapus seluruh kata tanpa menyentuh spasi putih di sekitarnya.Di bawah ini berfungsi untuk mode Normal: Saya setuju dengan jawaban Dan Olson bahwa Anda mungkin berada dalam mode normal untuk sebagian besar penghapusan. Lebih detail di bawah ini.
Jika kursor ada di dalam kata:
diw
untuk menghapus kata (tidak termasuk spasi)daw
untuk dihapus di sekitar kata (termasuk spasi sebelum kata berikutnya).Jika kursor berada di awal kata, cukup tekan
dw
.Ini dapat dikalikan dengan menambahkan angka biasa untuk gerakan, misalnya 2w untuk maju 2 kata, jadi d2w menghapus dua kata.
Sisipkan Mode ^ w
Gagasan untuk menggunakan hjkl untuk gerakan di Vim adalah lebih produktif untuk tetap menggunakan baris home. Di akhir kata ^ w sangat bagus untuk menghapus kata dengan cepat. Jika Anda masuk ke mode penyisipan, masukkan beberapa teks dan gunakan tombol panah untuk berakhir di tengah kata Anda telah bertentangan dengan filosofi baris rumah.
Jika Anda dalam mode normal dan ingin mengubah kata, Anda cukup menggunakan
c
(ubah) daripadad
(menghapus) jika Anda ingin mengubah kata sepenuhnya, dan masuk kembali ke mode insert tanpa harus menekani
untuk kembali untuk mengetik.sumber
Maksud Anda suka?
sumber
dw
tidak akan menghapus melewati tanda hubung atau tanda baca lainnya.Untuk menghapus semua karakter antara dua spasi putih, dalam mode normal:
Untuk menghapus hanya satu kata:
sumber
Ini tidak terlihat seperti ada setiap built-in cara untuk melakukannya dalam mode insert, yang pertanyaannya. Beberapa jawaban lain benar untuk mode normal, serta menunjukkan bahwa pemetaan khusus dapat dibuat untuk menambahkan fungsionalitas dalam mode sisipkan.
Jujur, Anda mungkin harus melakukan sebagian besar penghapusan dalam mode normal. ^ W rapi untuk diketahui, tetapi saya tidak yakin bisa memikirkan situasi di mana saya lebih suka melakukannya daripada melakukan mode normal dan memiliki perintah penghapusan yang lebih kuat yang bisa saya gunakan.
Vim sangat berbeda dari sejumlah editor lain (termasuk TextMate) dengan cara ini. Jika Anda menggunakannya secara produktif, Anda mungkin akan menemukan bahwa Anda tidak menghabiskan banyak waktu dalam mode penyisipan.
sumber
Untuk menghapus seluruh kata yang digunakan kursor Anda
diw
Untuk menghapus seluruh kata kursor Anda aktif dan untuk menempatkan Anda dalam mode masukkan gunakan
ciw
jika Anda tidak ingin menghapus seluruh kata tetapi menghapus dari tempat Anda berada
dw/cw
sumber
Karena ada begitu banyak cara untuk menghapus kata, mari kita ilustrasikannya.
Dengan asumsi Anda mengedit:
dan aktifkan perintah saat kursor berada di bilah 'a' di ':
sumber
Modus insert tidak memiliki perintah seperti itu, sayangnya. Dalam VIM, untuk menghapus seluruh kata di bawah kursor Anda dapat mengetik
viwd
dalam mode NORMAL. Berarti yang " V isual-blok I nner W ord D apus". Gunakan huruf besarW
untuk menyertakan tanda baca.sumber
Jawaban yang diterima gagal ketika mencoba mengulang kata yang dihapus, coba solusi ini sebagai gantinya:
Ini memetakan CTRL-BackSpace, juga bekerja dalam mode normal.
sumber
Untuk menghapus sejumlah karakter sebelum kursor, Anda dapat menggunakan X. Untuk menghapus sejumlah kata setelah kursor, Anda dapat menggunakan dw (beberapa kata dapat dihapus menggunakan 3dw untuk 3 kata misalnya). Untuk menghapus kursor secara umum, Anda dapat menggunakan daw.
sumber
Di vi lama,
b
memindahkan kursor ke awal kata sebelum kursor,w
memindahkan kursor ke awal kata setelah kursor,e
memindahkan kursor di akhir kata setelah kursor dandw
menghapus dari kursor ke akhir kata.Jika Anda mengetik
wbdw
, Anda menghapus kata di sekitar kursor, bahkan jika kursor berada di awal atau di akhir kata. Perhatikan bahwa spasi putih setelah kata adalah pertimbangan untuk menjadi bagian dari kata yang akan dihapus.sumber
Tidak begitu yakin tentang penggunaan "sebelum" dan "setelah" Anda, tetapi apakah Anda sudah mencoba
?
Sunting: Saya kira Anda sedang mencari sesuatu untuk digunakan dalam mode penyisipan. Anehnya, tidak ada yang dapat ditemukan di dokumen, ctrl-w tampaknya semua yang ada.
sumber
Saya membuat dua pemetaan sehingga saya bisa mendapatkan konsistensi dalam menyisipkan dan keluar dari mode penyisipan.
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
sumber
Dalam hal ini solusi yang diusulkan oleh OP (yaitu menggunakan
<c-w>
) dapat dikombinasikan dengan jawaban yang diterima untuk memberikan:sebagai alternatif (solusi lebih pendek):
Input sampel:
Keluaran:
sumber