Перепривязать буфер обмена системы VIM зарегистрировать ключи yank / paste - PullRequest
1 голос
/ 04 октября 2019

Вместо того, чтобы набирать

"*y
"*p

Чтобы скопировать код из одного файла в другой, какой вид ярлыка VIM вы бы порекомендовали реализовать в моем .vimrc, который не будет мешать многим другим движениям?

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Я использую <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.

0 голосов
/ 04 октября 2019

Нет ярлыка. Вставьте это в свой конфиг, затем просто используйте обычные y и p:

set clipboard+=unnamedplus

(:help clipboard, :help clipboard-unnamedplus)

(некоторые предпочитают unnamedunnamedplus.)

...