vim / gvim не может поместить буфер обмена X11 в регистры «+ или» *?


15

Из-за отсутствия безопасности со стандартным сервером vino я переключился на использование x11vnc на моем компьютере с Linux (с Xubuntu 14.04) и SSVNC на стороне Windows.

С vino, вырезать и вставить из windows в Linux и windows, в двух направлениях, было плохо (1), но когда это работало, это работало для каждой программы; Я мог бы использовать vimреестр "+без проблем. Я бегу (2)

autocutsel -fork 

обычно так, чтобы «средний щелчок» и ctrl-c / v были одинаковыми.

Теперь, когда я использую x11vnc (вызывается с:) x11vnc -forever -repeat -safer -usepw -ssl -autoport 6000для безопасного, зашифрованного соединения, возникла проблема:

  1. Я могу без проблем копировать в Windows и вставлять в удаленные терминалы Linux, libreoffice и т. Д., В обоих направлениях.

  2. В vim, или gvimлюбая попытка вставить с "+pили "*pговоритE353: Nothing in register *

  3. Снова в vimили gvim, наоборот, работает: если я, "+yyто я могу вставить вещь на стороне Windows.

Как кто-нибудь имеет ключ к решению этой проблемы? Странно то, что паста работает везде, где я проверил, но в vim...

Package                 Installed       Previous        Now             State
=======================-===============-===============-===============-=====
vim                     2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  install
vim-gnome               2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  install

Примечания:

(1) не могу найти ошибку сейчас --- сообщается. Он перестает работать через некоторое время.

(2) Я пытался с и без. Без изменений.


У меня было много проблем с x11vnc, связанных с различными языковыми локалями на хосте и клиенте, особенно при управлении гостями vmware через vnc на сервере. Я наконец «решил» это, установив сервер nomachine на хост-систему. Я знаю, что это, вероятно, не то решение, которое вы имеете в виду, но nomachine и nxclient являются безопасными, очень быстрыми и все туннелируется через ssh.
Флойд

2
Я не использую vnc, но я исправил все свои проблемы с совместимостью буфера обмена между vim и ОС следующим образом: (1) используя set clipboard=unnamedplusв каждом linux, который я использую (2) alias vim='gvim -v'в моем .bashrcs (чтобы обойти определенные дистрибутивы, компилирующие vim без поддержки X буфера обмена) (3) set clipboard=unnamedв окнах. Надеюсь, это поможет.
Патрик Обара

@PatrykObara попробует ... в следующий раз мне придется использовать Windows PC. У меня сейчас только установка Linux и никаких проблем ... Спасибо.
Rmano

Ответы:


1

Поскольку я не знаю, какой x11vnc вы используете (у меня есть три разные версии, есть и другие), это руководство для устранения этой конкретной проблемы.

Во-первых, понять буферы обмена. В большинстве случаев их четыре. (Больше возможно, если вы используете инструменты управления буфером обмена.) X11 определяет три буфера обмена: основной, дополнительный и буфер обмена. Secondary редко используется (и почти наверняка это не ваша проблема), поэтому мы его проигнорируем. Приложения, которые используют средний щелчок для вставки (xterm и др.), Обычно используют основной буфер обмена. Приложения, которые выполняют вставку в стиле Windows (нажмите «Редактировать», «Вставить» или «Управление V»), иногда используют только буфер обмена. Некоторые приложения делают оба (Google Chrome вставляет из основного с помощью среднего щелчка и из буфера обмена с элементом управления V). Следующим является буфер обмена VNC (только один) и буфер обмена Windows. (Если вы используете vnc viewer, работающий на X11, все усложняется, но это будет иметь смысл, если подумать об этом. ) буфер обмена VNC отличается тем, что отслеживает различные обновления других буферов обмена, чтобы поддерживать их актуальность. Если вы игнорируете основной буфер обмена, это довольно просто: последний обновленный буфер обмена копируется во все остальные. Проблема в том, что желаемое поведение основного буфера обмена не является четко определенным. Я видел следующие варианты поведения различных реализаций vnc:

  1. Игнорируйте основной, используйте только буфер обмена.
  2. Игнорируйте буфер обмена, используйте только основной.
  3. Используйте самые последние для Unix для копирования Windows, скопируйте в оба для Windows для Unix копий.
  4. Постарайтесь быть умным: используйте основной только до тех пор, пока не будет использован буфер обмена, затем используйте только буфер обмена.
  5. Постарайтесь быть умнее: используйте основной до тех пор, пока не будет изменен буфер обмена, затем игнорируйте основной до тех пор, пока не произойдет изменение из окон, затем используйте следующий измененный, снова игнорируя основной после использования буфера обмена.
  6. Постарайся быть еще умнее. (Я так и не понял, что они пытались сделать с этим, но обычно это было правильно)

Далее идет инструменты. Есть два инструмента, которые я считаю необходимыми для устранения проблем с буфером обмена: текстовый редактор (для этого отлично работает блокнот) и xclip. Просмотрщик буфера обмена Windows хорош, но не обязателен.

Теперь процедура: Из каждого приложения в группе, которую вы устраняете, выберите и скопируйте текст, проверяя состояние всех трех доступных буферов обмена. (Буфер обмена vnc очень трудно просматривать напрямую, и он не очень полезен, поскольку обычно он не хранит данные, а только метаданные.) Ответьте на следующие вопросы: какой буфер обмена использует каждое приложение? в каком порядке они используются?

Надеюсь, этого достаточно, чтобы вы начали.


Благодарность! Я, к сожалению, сейчас не могу проверить, у меня почти нет окон из моих ПК ;-). Попробую расследование, как только я снова буду вынужден использовать Windows ...
Rmano
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.