Подтвердить что ты не робот

Запретить Vim очищать буфер обмена при выходе

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

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

4b9b3361

Ответ 1

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

autocmd VimLeave * call system("xsel -ib", getreg('+'))

Ответ 2

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

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

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

Ответ 3

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

Помогает ли это?

Ответ 4

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

autocmd VimLeave * call system('echo ' . shellescape(getreg('+')) . ' | xclip -selection clipboard')