Ketika saya harus mengganti kata dengan kata lain yang saya tarik sebelumnya, saya biasanya menggunakan alur kerja yang tampaknya tidak alami bagi saya:
Katakanlah saya memiliki teks ini:
foo bar buzz
Dan saya ingin menarik foo
dan mengganti bar
dengan apa yang saya tarik sebelumnya.
Setelah menarik foo
, saya melihat opsi berikut:
Pilihan 1
Tempatkan kursor
bar
denganw
Taruh
foo
di depanbar
denganP
Letakkan kursor di atas
b
yang tersisabar
dan hapus kata dengande
pilihan 2
Letakkan kursor di bar dengan
w
Gunakan
de
untuk menghapusbar
Masukkan konten register 0 dengan
"0P
(karena saya dihapusbar
,foo
tidak dapat diakses lagi dengan sederhanap
)
Kedua cara itu tampaknya terlalu rumit bagi saya dan saya yakin ada cara yang lebih efisien untuk mencapai tindakan ini, tetapi saya tidak dapat menemukannya. Gagasan ini adalah untuk menggabungkan tindakan delete dan put hanya dalam satu, atau setidaknya menghindari untuk menyimpan kata yang dihapus dalam register yank sehingga saya dapat menempatkan kata yang diinginkan dengan sederhana p
.
Saya juga tahu mode ganti dipicu dengan R
tetapi tidak memungkinkan untuk menempatkan apa yang ditarik.
TL; DR : Bagaimana cara mengganti kata dengan isi dari daftar yank?
sumber
Saya telah menemukan cara lain untuk melakukannya, ini sedikit mirip dengan opsi 2 tetapi memiliki keuntungan karena tidak mengacaukan keadaan register.
Idenya adalah untuk menggunakan " daftar lubang hitam ": Daftar ini dapat diakses melalui
"_
dan memiliki kekhasan yang dapat Anda tulis di dalamnya tetapi tidak membacanya, jadi seperti lubang hitam register ini benar-benar menghilangkan segala sesuatu yang masuk ke dalamnya. Di sini kita dapat menggunakannya sehinggafoo
tetap dalam daftar yank bahkan setelahbar
penghapusan.Dengan solusi ini, worflow setelah mencabut
foo
adalah:bar
denganW
(atau kata-kata yang dibutuhkan tentu saja)bar
dengan"_de
foo
dari daftar yank denganP
. Register yank masih berisifoo
sejakbar
masuk ke lubang hitam.Saya tidak yakin itu adalah solusi yang lebih baik daripada @ Carpersmoker ( dalam hal vimgolf @Carpetsmoker menang ) tetapi saya tidak tahu tentang daftar lubang hitam dan saya pikir beberapa mungkin tertarik untuk mengetahuinya.
sumber
Pergi ke mulai dari "foo". Tekan
yiw
. Itu menarik kata batiniah.Pergi ke "bar" menekan surat itu
w
. Kemudian pilih dan tarik kembali:viw"0p
Saya menggunakan
ciw
danyiw
banyak.sumber
iw
ini menarik tetapi solusi Anda sebenarnya sama dengan @ CarpetSmoker: memilih secara visual kata kedua dan meletakkan yang pertama. Saya juga berpikir bahwa solusi Anda akan bekerja dengan sederhanap
daripada menggunakan"0
register.Saat kursor berada di mana saja pada kata,
yiw
- mencabut kata dan menyimpannya dalam0
register.Pergi ke kata target untuk diganti
ciw
akan menghapus kata dan menempatkan Anda dalam mode sisipkan.ctrl-r
. A"
akan muncul meminta register untuk dipanggil.0
akan menempelkan kata yang ditarik.Kata-kata yang ditarik (biasanya!) Disimpan dalam
0
register. Lihat:registers
untuk melihat buffer yang disimpan. Ini mungkin tampak prosedur yang panjang, IMHO ini membuka pintu ke trik register yang jauh lebih canggih.sumber