Asumsikan saya memiliki teks yang Fnord
ditarik sebelumnya dan kursor saya berada pada B
baris:
M:mock(Baz)
Bagaimana saya bisa mengubah teks di dalam () dengan teks yang sudah ditarik sebelumnya?
Saat ini, saya sering melakukan kesalahan dengan melakukan:
di(
alias "delete inside ()"- SHIFT + P
namun yang membuat saya dengan teks yang tepat lagi, karena teks yang dihapus akan dipindahkan ke register.
Saya ingin memiliki:
M:mock(Fnord)
cut-copy-paste
normal-mode
register
k0pernikus
sumber
sumber
0
Register akan berisi teks yang ditarik terakhir.:h quote0
vi)p
. Sama dengan jawaban itu, hanya dengani)
objek teks alih-alihw
objek teks,Jawaban:
Anda dapat menggunakan pemilihan visual untuk memilih teks yang akan diganti, dan kemudian menempelkannya sebagai berikut:
vi(p
vi(
memilih Baz (karena tertutup dalam tanda kurung),p
menempelkan Fnord di atasnya.Namun, ini akan menarik Baz ke register setelah tempel, yang mungkin bukan yang Anda inginkan.
sumber
Kecuali Anda menentukan register,
p
(atauP
) akan menggunakan register terakhir yang telah diisi. Register tanpa nama""
berisi teks yang baru-baru ini diambil atau dihapus (kecuali jika register lain ditentukan, misalnya dengan"ay
), tetapi ini juga digunakan"0
untuk menarik atau"1
untuk menghapus / mengubah. Lihat register .Jika teks terakhir dicabut dengan
y
Anda dapat menempelkannya dari0
register dengan"0P
. Jika sudah dihapus, Anda bisa mengaksesnya dengan2
register with"2P
("1
sekarangBaz
).Atau Anda bisa menghindari mengacaukan register Anda dan menghapus ke register blackhole
"_
:sumber
Jika menginstal plugin adalah opsi, Anda dapat menggunakan yankstack.vim . Maka Anda bisa mempertahankan alur kerja Anda saat ini:
sumber
Dengan asumsi "Fnord" ada dalam daftar yang dapat Anda lakukan (dengan kursor di awal baris)
f(ci(<c-r>a
sumber