Bagaimana cara mengganti teks di dalam () dengan teks yang sudah ditarik sebelumnya?

9

Asumsikan saya memiliki teks yang Fnordditarik sebelumnya dan kursor saya berada pada Bbaris:

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)
k0pernikus
sumber
1
@ Kaya Pertanyaan yang disediakan mencakup kasus yang lebih umum untuk mengganti kata yang ditarik. Saya pikir pertanyaan ini sedikit lebih spesifik dan tidak menarik jawaban yang sama.
k0pernikus
Protip: 0Register akan berisi teks yang ditarik terakhir. :h quote0
Peter Rincker
1
Gagasan yang sama dari jawaban yang diterima dari pertanyaan yang disebutkan dapat diterapkan di sini. Dengan kursor di dalam tanda kurung, cukup tekan vi)p. Sama dengan jawaban itu, hanya dengan i)objek teks alih-alih wobjek teks,
EvergreenTree
1
@ k0pernikus Saya khawatir kita harus setuju untuk tidak setuju pada yang itu. Bagi saya, bagian penting dari kedua pertanyaan adalah penggantian, dan bukan objek teks yang digunakan untuk menerapkannya.
Kaya

Jawaban:

13

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), pmenempelkan Fnord di atasnya.

Namun, ini akan menarik Baz ke register setelah tempel, yang mungkin bukan yang Anda inginkan.

Alex
sumber
10

Kecuali Anda menentukan register, p(atau P) 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 "0untuk menarik atau "1untuk menghapus / mengubah. Lihat register .

Jika teks terakhir dicabut dengan yAnda dapat menempelkannya dari 0register dengan "0P. Jika sudah dihapus, Anda bisa mengaksesnya dengan 2register with "2P( "1sekarang Baz).

Atau Anda bisa menghindari mengacaukan register Anda dan menghapus ke register blackhole"_ :

"_di(P
Steve
sumber
3

Jika menginstal plugin adalah opsi, Anda dapat menggunakan yankstack.vim . Maka Anda bisa mempertahankan alur kerja Anda saat ini:

Saat ini, saya sering melakukan kesalahan dengan melakukan:

  • di (alias "delete inside ()"
  • SHIFT + P
  • Alt + p - siklus ke yank sebelumnya
mMontu
sumber
1

Dengan asumsi "Fnord" ada dalam daftar yang dapat Anda lakukan (dengan kursor di awal baris) f(ci(<c-r>a

Christian Brabandt
sumber