Bagaimana cara mengganti satu kata di bawah kursor?


144

Bagaimana cara mengganti kata di bawah kursor di Vim.

Jadi, bukannya menggunakan dwmaka imaka kata dan kemudian Esc, ada kombinasi sederhana untuk menggantikan kata di bawah kursor?

Jawaban:


251
ciw

(ubah kata dalam) akan mengubah seluruh kata di bawah kursor. Dibandingkan dengan

cw

yang hanya akan mengubah kata dari posisi kursor saat ini . Untuk info lebih lanjut lihat pertanyaan / jawaban SO ini .


Bagaimana menghadapi situasi jika kata tersebut mengandung titik atau garis miring (misalnya /usr/bin/bashatau 1222.333)? Sepertinya vim mengartikan /dan .sebagai akhir kata dan tidak akan memilih seluruh string.
Alexander Cska

85

Saya sering menemukan diri saya ingin mengganti satu kata dengan kata lain yang telah saya tarik dari tempat lain. Masalah dengan solusi lain adalah jika Anda mencoba mengubah kata, maka tempel Anda berikutnya adalah kata yang Anda hapus cw.

Coba yang berikut ini:

1 "This first word should overwrite the second"

yiw     yank inner word (copy word under cursor, say "first").
...     Move the cursor to another word (say "second").
viwp    select "second", then replace it with "first". 

Semoga itu yang kamu cari.


7
Ini bekerja dengan baik tetapi hanya jika penggantian harus dilakukan once. Jika saya harus mengganti pasangan second' by pertama` (dalam contoh Anda), kata yang disalin menjadi secondsetelah penggantian pertama.
ViFI

32

ciw

c   change
iw  inner word

Ini akan menghapus kata di bawah kursor (bahkan jika kursor berada di suatu tempat di tengah kata) dan masuk ke mode insert.


Lihat juga dokumentasi Vim untuk referensi:

:help c
:help text-objects

17

Jika Anda ingin mengubah kata dengan kata yang sebelumnya ditarik, ada solusi lain untuk viwp(setelah Anda menarik kata pertama).

ciwmenghapus kata sebelumnya dan menempatkan Anda dalam mode sisipkan di tempat kata sebelumnya. Tetapi kemudian Anda dapat menggunakan ctrl+r, 0untuk memasukkan isi register 0 (yang berisi kata yang sebelumnya disenggol).

Begitu:

yiw
[move to next word]
ciw
ctrl+r
0

Ini berfungsi lebih baik daripada viwpkarena setelah penggunaan pertama Anda kemudian dapat berulang kali melakukan penggantian dengan .. Itu juga tidak beralih ke mode visual dan sorot sebentar.


1
Tidak yakin apa yang Anda maksudkan bahwa itu tidak mengubah mode, tampaknya sebaliknya, tetapi mungkin itu yang Anda inginkan, untuk tetap dalam mode insert. Tetapi keuntungan besar adalah bahwa ini (bertentangan dengan viwp) dapat dilakukan beberapa kali hanya dengan satu sentakan. Terima kasih!
Palo

Oh Anda benar, saya berpikir untuk masuk ke mode visual, diedit. Saya tidak menyadari itu adalah batasan viwp- bahkan .tidak menduplikatnya.
Connor

3
Sejauh ini, ini adalah solusi terbaik ketika kami sudah mencabut kata penggantinya.
mljrg

1
Ini jawabannya! Kemampuan untuk menggunakan .ini sangat bagus!
izzy

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.