У меня есть следующее отображение, которое позволяет вставить слово из буфера янки. (cpw = изменить слово вставки)
nmap <silent> cpw "_cw<C-R>"<Esc>
Я хотел бы разрешить такие команды, как следующие
cpiw (изменить пасту в слове -> как движение 'iw')
cpaw (изменить вставить слово -> как движение 'aw')
для любого движения {м.р.}
ф {т}
Можно ли разрешить отображение, поэтому мне не нужно писать nmap для каждого движения, с которым я хочу работать?
Заранее спасибо.
РЕДАКТИРОВАТЬ: опечатки исправления. Мое решение ниже
После тщательного изучения оператора карты мне удалось создать функцию, которая выполнялась именно так, как я хотел. Для всех, кто заинтересован, это выглядит следующим образом:
"This allows for change paste motion cp{motion}
nmap <silent> cp :set opfunc=ChangePaste<CR>g@
function! ChangePaste(type, ...)
silent exe "normal! `[v`]\"_c"
silent exe "normal! p"
endfunction
EDIT - новая версия, которая может быть лучше.
"This allows for change paste motion cp{motion}
nmap <silent> cp :set opfunc=ChangePaste<CR>g@
function! ChangePaste(type, ...)
if a:0 " Invoked from Visual mode, use '< and '> marks.
silent exe "normal! `<" . a:type . "`>\"_c" . @"
elseif a:type == 'line'
silent exe "normal! '[V']\"_c" . @"
elseif a:type == 'block'
silent exe "normal! `[\<C-V>`]\"_c" . @"
else
silent exe "normal! `[v`]\"_c" . @"
endif
endfunction