Я использую <C-y>
в качестве оператора, который выполняет возврат в "*
. Я не связывал пасту, хотя, полагаю, можно сделать
nnoremap <C-P> "*p
или что-то подобное. У вставки, однако, есть так много вариантов, что я не хочу «ограничивать» себя. (Я использую ]op
- из tpope / unimpaired - иногда следует Command-V, а также другие методы вставки.)
Для <C-y>
у меня есть следующий скрипт в ~/.vim/pbcopy_op.vim
:
if exists('g:loaded_pbcopy_op')
finish
endif
let g:loaded_pbcopy_op = 1
nnoremap <silent> <C-y> :set operatorfunc=pbcopy#operator<CR>g@
nnoremap <silent> <C-y>y :set operatorfunc=pbcopy#operator<CR>g@_
nnoremap <silent> <C-y><C-y> :set operatorfunc=pbcopy#operator<CR>g@_
vnoremap <silent> <C-y> :<C-u>call pbcopy#operator(visualmode(), 1)<CR>
И определение функции (~/.vim/autoload/pbcopy.vim
):
function! pbcopy#operator(type, ...) abort
let l:visual = a:0
if l:visual
normal! gv"*y
elseif a:type == 'line'
'[,']yank *
else " char
normal! `[v`]"*y
endif
endfunction
Если вы копируете из одного файла в другой внутри того же экземпляра vim , просто используйте y
и p
.
Последняя альтернатива: я использую tmux(1)
, поэтому я часто сжимаю вещи в буферах tmux.
Тогда, так как у меня есть tpope/ tbone установлен, я могу сделать :Tput
.