ฉันพยายามเขียนฟังก์ชัน yank ที่กำหนดเอง แต่ฉันไม่สามารถหาวิธีทำให้ไม่สามารถทำซ้ำได้ (เช่น yank ปกติ) ฉันมีบางอย่างที่คล้ายกับต่อไปนี้:
function! s:YankMotion(type)
if a:type ==# 'line'
normal! `[V`]y
elseif a:type ==# 'char'
normal! `[v`]y
else
echom "Unexpected selection type"
return
endif
endfunction
nnoremap y :set opfunc=<sid>YankMotion<cr>g@
ปัญหาคือว่าถ้าคุณทำการผ่าตัดที่ทำซ้ำได้ (เช่น. cw
) งัดบางสิ่งบางอย่างจากนั้นดำเนินการทำซ้ำอีกครั้งกดปุ่ม.
คุณจะคาดหวังที่จะเรียกcw
แต่มันพยายามที่จะทำงัดอีกครั้ง
เป็นไปได้ไหมที่จะแก้ไขปัญหานี้?
.
ก็ตอนนี้คำสั่งโหมดปกติและจึงทำซ้ำกับ