Saya mencoba memahami bagaimana saya bisa menggunakan operator dengan gerakan selanjutnya di dalam pemetaan. Sebagai contoh:
nmap /c c{here we pending for a motion}/<C-r>"<CR>
Peta harus melakukan hal berikut:
- Aktifkan
c
operator dan dengarkan gerakan selanjutnya; - Misalnya, saya bisa mengetik di sini
t,
untuk mengubah semuanya sebelum koma berikutnya; - Pergi ke mode insert menghapus semua antara kursor dan koma;
- Teks yang dihapus secara otomatis dicari sebagai suatu pola
Jadi sederhananya, setelah teks gerak dihapus, saya meninggalkan dalam mode memasukkan dengan kejadian yang disorot dari teks yang dihapus. Saya akan sangat berterima kasih jika seseorang membantu saya untuk memecahkan kasus ini.
MEMPERBARUI
Jawabannya hampir seperti yang saya inginkan. Tapi! Saat saya menekan /cw
, ketikkan sesuatu sebagai ganti kata, lalu tekan <Esc>
. Setelah saya berharap untuk melakukan hal yang sama dengan kejadian selanjutnya. Tetapi setelah presing n
(pergi ke kejadian berikutnya) dan .
(ulangi perintah terakhir) hanya menambahkan teks yang terakhir diketik alih-alih menggantinya. Tujuan utama pemetaan adalah menggunakannya dengan n/N
dan .
mengulangi. Apakah saya melewatkan sesuatu?
sumber
/c
dani
) yang.
baru saja mengulang yang terakhir. Jika Anda ingin memperpanjangnya, periksarepeat
plugin. @TimurFayzrakhmanov juga ada:g
dan:s
perintah, dapat membantu Anda juga."
dalam kode Anda'let @/=@""'
? Saya pikir itu mungkin, misalnyasilent exec 'normal!
[v]c'
, karenac
operator melakukan apa yang saya harapkan, kecuali itu tidak menambahkan teks yang diubah ke pola pencarian.""
adalah kesalahan ketik .. memperbaiki .. Saya datang denganc
juga, namun menambahkan spasi, karena ada perubahan moden-i-n-i
saya kira ... melakukan beberapa tes yang akan Anda lihat.d
key
danstartinsert
kecall feedkeys("cgn", 'n')
(lihat jawaban saya di bawah ini)Lebih mudah untuk mengimplementasikan (dan mendokumentasikan) pemetaan kompleks dengan menggunakan fungsi:
Kemudian buat panggilan pemetaan Anda fungsi itu:
Edit:
Jika tujuan Anda adalah untuk melakukan pencarian & mengganti di sejumlah besar tempat Anda harus mencoba perintah pengganti:
:s
. Anda dapat mengubah pemetaan Anda untuk menyalin pilihan visual ke pola pencarian:sumber
enter motion:
, dia memberi:t,ggVGJZZ
^ _ ^ Ini adalah masalah umum untuk penggabungan perintah/cw
lalu mengetikkan sesuatu sebagai ganti kata, lalu tekan<Esc>
. Setelah saya ingin melakukan hal yang sama dengan kejadian selanjutnya. Tetapi setelah presingn
(pergi ke kejadian berikutnya) dan.
(ulangi perintah terakhir) hanya menambahkan teks yang terakhir diketik alih-alih menggantinya. Tujuan utama pemetaan adalah menggunakannya dengann/N
dan.
mengulangi. Apakah saya melewatkan sesuatu?.
mengulangi perintah Anda.<CR>
dariinput()
).Solusi ini bekerja dengan "repeat the last command" (alias
.
):Saat mengulang, Anda bahkan tidak perlu menggunakan
n
, Anda bisa.
langsung mengambil dan mengganti kejadian berikutnya jika Anda ingin lebih cepat.Secara opsional, jika Anda suka memiliki highlight dari kata-kata yang cocok, Anda dapat menggantinya
'cgn'
dengan'n``cgn'
.sumber