6

Если я копирую текст в буфер обмена xterm из vim, он очищается при выходе из vim.

Как мне это предотвратить?

5 ответов5

5

Недавно я решил эту проблему с помощью одной строки в .vimrc (требуется утилита xsel):

autocmd VimLeave * call system("echo -n $'" . escape(getreg(), "'") . "' | xsel -ib")

Он сохраняет текущий текст реестра в буфере буфера обмена.

4

Я использую xclip для этого:

autocmd VimLeave * call system("xclip -o | xclip -selection c")

1

Это довольно просто:

  1. Установите Parcellite или glipper для Gnome или klipper для KDE
  2. Перезагрузите систему или запустите ее вручную

Смотрите эту страницу для получения дополнительной информации и вариантов.

0

Попробуйте выбрать, удерживая нажатой клавишу Shift. Это (обычно) говорит эмулятору терминала напрямую копировать текст вместо отправки событий мыши в Vim. Выход из Vim после этого таким образом не должен уничтожать содержимое буфера копирования, а средний щелчок в другом приложении должен вставить выделенный текст.

Это не поможет вам с gVim. Тем не менее, вы заметили, что используете регистр +, что означает, что вы должны получать доступ к буферу обмена, который не уничтожается при выходе из приложения, которое в последний раз "записывало" в него. Этот регистр не вставляется с помощью среднего щелчка мышью. Либо используйте control-v (для приложений, которые поддерживают вставку из буфера обмена с помощью этой горячей клавиши), либо щелкните правой кнопкой мыши и выберите "Вставить".

0

У меня нет хорошего ответа, и в настоящий момент у меня нет доступа к системе под управлением X для экспериментов, но эта тема обсуждается в справочном руководстве Vim здесь:

:help x11-selection

Вы не сказали, как копировали текст в буфер обмена, но если вы используете регистр * , это может помочь вместо него использовать регистр + .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .