У меня есть следующее сопоставление, которое позволяет вставлять слово из буфера yank. (cpw = изменить слово вставки)
nmap <silent> cpw "_cw<C-R>"<Esc>
То, что я хотел бы сделать, это разрешить такие команды, как
cpiw (изменить вставку в слово → как движение "iw" )
cpaw (изменить вставить слово → как движение "aw" )
для любого движения {m} ф {т}
можно ли это разрешить в сопоставлении, поэтому мне не нужно писать nmap для каждого движения, с которым я хочу работать?
Спасибо заранее.
EDIT: исправления опечаток. Мое решение ниже
После тщательного изучения оператора карты мне удалось создать функцию, которая выполнялась именно так, как я хотел. Для всех, кто заинтересован, он выглядит следующим образом:
"This allows for change paste motion cp{motion}
nmap <silent> cp :set opfunc=ChangePaste<CR>[email protected]
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>[email protected]
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