Запрет Vim очистить буфер обмена при выходе - PullRequest
42 голосов
/ 23 июня 2011

Когда я открываю Vim из терминала, копирую некоторый текст в системный буфер обмена и выхожу из Vim, системный буфер обмена очищается.

Как сохранить скопированный текст в буфере обмена?

Ответы [ 5 ]

39 голосов
/ 21 февраля 2012

Синтезируя ответы от суперпользователя , просто добавьте следующее к своему .vimrc

autocmd VimLeave * call system("xsel -ib", getreg('+'))
10 голосов
/ 27 ноября 2012

Установите Parcellite или glipper для Gnome и klipper для KDE.

Перезагрузите компьютер или запустите его вручную.

см .: https://wiki.ubuntu.com/ClipboardPersistence

5 голосов
/ 07 августа 2017

На основании ответа Мэтта , следующее использует xclip вместо xsel:

autocmd VimLeave * call system('echo ' . shellescape(getreg('+')) . 
            \ ' | xclip -selection clipboard')
4 голосов
/ 24 февраля 2018

Я столкнулся с этой проблемой и связанной с ней проблемой, при которой приостановка vim с ctrl-z также очистила бы буфер обмена.Я расширил решение Мэтта , чтобы исправить оба:

set clipboard=unnamedplus

if executable("xsel")

  function! PreserveClipboard()
    call system("xsel -ib", getreg('+'))
  endfunction

  function! PreserveClipboadAndSuspend()
    call PreserveClipboard()
    suspend
  endfunction

  autocmd VimLeave * call PreserveClipboard()
  nnoremap <silent> <c-z> :call PreserveClipboadAndSuspend()<cr>
  vnoremap <silent> <c-z> :<c-u>call PreserveClipboadAndSuspend()<cr>

endif

Защита if executable("xsel") существует, чтобы избежать ошибок, если xsel не установлен.Отображение nnoremap сохраняет буфер обмена при приостановке из нормального режима, а отображение vnoremap обрабатывает приостановку из визуального или выборочного режимов.

Я подтвердил, что это работает на vim 7.4 и 8.0.

1 голос
/ 28 июня 2011

Пожалуйста, поправьте меня, если я ошибаюсь, но из моего понимания Вима ...1) Vim использует регистры вместо буфера обмена для хранения скопированных / вырезанных данных.2) Эти регистры сохраняются при выходе из vim в файле состояния, но недоступны вне запущенного процесса, если вы не открываете файл вручную и не проверяете его содержимое.3) Сохранение содержимого в + registre , когда Vim запускает , позволяет вставлять его в другие приложения.4) Приостановив vim (CTRL-Z) вместо закрытия, эти регистры все еще доступны.

Оказывает ли это помощь?

...