Совместное использование буфера обмена Mac OS X с внутренним X-сервером

21

Я хотел бы иметь возможность копировать и вставлять между собственными (Какао?) Приложениями MacOS X и приложениями, работающими на внутреннем X-сервере Mac.

В настоящее время я могу копировать и вставлять самостоятельно. Если я выделю текст в окне xterm, я могу вставить его обратно в любое другое окно на основе X. Аналогично, копирование информации вне X может быть вставлено в приложения, которые также находятся вне X.

Как пример, если я (именно в таком порядке):

  • Копировать (выбрать с помощью мыши) «Копировать с помощью выделения X» в окне xterm
  • Копировать (Edit | Copy) «Текст в Firefox» в Firefox
  • Вставить (Shift Insert xmodmap) в нано я получаю «Копировать с использованием X выбора»
  • Вставить (Edit | Paste) здесь я получаю -> Текст в Firefox
  • Вставить в MacVIM (Правка | Вставить) Я получаю «Текст в Firefox»
  • Вставить в / usr / bin / vim (не графический) Я получаю «Копирование с использованием выделения X»

Как включить «совместное использование буфера обмена» между X и Cocoa?

Xmodmap, который я использую для вставки в X:

xmodmap -e "keycode 84 = Insert"

где 84 - клавиша Enter на цифровой клавиатуре. Так Shift Enter дает мне пасту.

kwutchak
источник
Это согласуется с X-приложениями? Вы пробуете это в простом xtermили похожем виде, а не vimили что-то со своими собственными буферами? Какую версию OS X вы используете? Мой буфер обмена используется в Какао и X11, как и ожидалось в 10.5.7.
JTB
Привет, JTB, спасибо за вашу помощь. Я использую vim и знаком с проблемами использования его внутренних буферов. Обычно я изменяю и переключаюсь в режим редактирования, затем вставляю из меню редактирования gvim (или MacVim). Я добавил дополнительную информацию в свой пост, чтобы прояснить другие части вашего вопроса.
кватчак
Ах, спасибо за дополнительную информацию. Я вижу в основном то, что вы описываете, хотя вставка на шаге 3 работает (при среднем щелчке у меня не вставлено сопоставление). Command-C действительно копирует в собственный буфер обмена, если у меня выделен текст в X11, но я понимаю, что вы имеете в виду, что при использовании собственных операций X копирования / вставки X он не синхронизируется должным образом.
JTB
Для последней версии OSX (я использую 10.12) работает следующее: stackoverflow.com/a/9525347/1353267
Samveen

Ответы:

14

Вы можете включить синхронизацию буфера обмена, отредактировав ~/Library/Preferences/org.x.X11.plistи добавив следующие пять логических ключей 1 (и проверив их).

sync_clipboard_to_pasteboard
sync_pasteboard
sync_pasteboard_to_clipboard
sync_pasteboard_to_primary
sync_primary_on_select

Перезапустите X11, и они должны быть синхронизированы должным образом.

Изменить: Вы можете добавить ключи либо с помощью редактора списка свойств, либо с помощью следующих команд терминала:

defaults write org.x.X11 sync_clipboard_to_pasteboard -boolean true
defaults write org.x.X11 sync_pasteboard -boolean true
defaults write org.x.X11 sync_pasteboard_to_clipboard -boolean true
defaults write org.x.X11 sync_pasteboard_to_primary -boolean true
defaults write org.x.X11 sync_primary_on_select -boolean true

Альтернативное решение - установить последнюю версию XQuartz, которая предоставляет эти опции через панель «Настройки X11» >> «Панель вставки».

JTB
источник
Эта строка напечатана на моем xterm и скопирована по всему ...;) Эта строка успешно вставлена ​​обратно в мой xterm ...;) Еще один случай, когда моя жена не поняла бы, насколько это исправление чрезвычайно приятно !! Огромное спасибо.
кватчак
Спасибо за вопрос. В Mac у меня есть привычка нажимать Cmd + C до такой степени, что я не осознавал, чего мне не хватало. Но я очень рад иметь это в моем конфиге сейчас.
JTB
Я установил XQuarts и изменил параметры для него. Когда я запускаю ssh в удаленной системе с включенным XForwarding (в обеих системах) и добавляю что-то в буфер обмена с помощью xclip (например, ls | xclip), буфер обмена в моей локальной системе (mac os x) не изменяется. Чего мне не хватает?
cwd
4
Я думаю, что правильный файл для записи сейчасorg.macosforge.xquartz.X11
Кит Смайли
2

Вы также можете перекомпилировать vim-7.3 и добавить следующее в ваш .vimrc:

set clipboard=unnamed

Тогда вы сможете сделать 'yy' в vim и вставить в Какао с помощью Cmd + V. И наоборот: скопируйте с помощью Cmd + V в Какао и вставьте в vim с помощью 'p'

user47498
источник
обратите внимание, что ваш vim должен быть скомпилирован с clipboardопцией, чтобы это работало. Вы можете увидеть, если это, выполнив vim --version | grep clipboard. Если это говорит +clipboard, то ты хороший. Если это говорит -clipboard, это не будет работать.
egarcia