Я решаю эту проблему с помощью autocutsel
, который работает с emacs
и остальной частью моей системы Ubuntu.
autocutsel - keep the X clipboard and the cutbuffer in sync
Я использую следующие команды (запускается один разобычно вызывается механизмом запуска моего оконного менеджера, или ~/.xsession
):
autocutsel -fork
autocutsel -fork -selection PRIMARY
Первый экземпляр autocutsel
выполняет следующее:
autocutsel отслеживает измененияв выделении буфера и буфера обмена сервера [X11].Когда буфер обмена изменяется, он обновляет буфер буфера.Когда режущий буфер изменяется, ему принадлежит выбор буфера обмена.Вырезка буфера и буфер обмена всегда синхронизируются.
Однако обычно существует третий буфер обмена, называемый PRIMARY
, второй экземпляр которого autocutsel
используется для синхронизации с двумя другими.
Преимущества этого состоят в том, что три основных буфера обмена унифицированы, так что вставка текущего выделения посредством копирования / вставки по среднему щелчку или в стиле CUA с помощью CTRL-C и CTRL-V все работают вместе.Основным недостатком этого подхода является то, что любое автоматическое выделение текста (например, двойной щелчок для выделения слова в emacs или щелчок по значку BlockQuote в поле редактирования StackOverflow) мгновенно стирает ваш буфер копирования.Чтобы обойти это, я использую регистратор истории буфера обмена, такой как glipper
, который также удобно записывает все содержимое буфера обмена и позволяет мне извлекать потерянное содержимое буфера обмена в таких обстоятельствах.Это может занять немного привыкания и хорошо работает для меня.В качестве альтернативы вы можете поэкспериментировать с параметром -pause
, который ждет некоторый период времени, прежде чем делать выбор, который может быть достаточно длинным, чтобы отменить выбор или удалить любой автоматически выбранный текст.Я не смог получить результаты, которые работали достаточно хорошо для меня.
Обратите внимание, что это решение не требует какой-либо специальной конфигурации emacs
, которую я использую с включенным режимом cua.