与内部X服务器共享Mac OS X剪贴板


21

我希望能够在本地(Cocoa?)MacOS X应用程序与在Mac内部X服务器下运行的应用程序之间进行复制和粘贴。

目前,我可以独立复制和粘贴。如果在xterm窗口中选择文本,则可以将其粘贴回任何其他基于X的窗口中。同样,可以将X外部的复制信息粘贴到X外部的应用程序中。

例如,如果我(按照此顺序):

  • 在xterm窗口中复制(使用鼠标选择)“使用X选择复制”
  • 在Firefox中复制(编辑|复制)“ Firefox中的文本”
  • 粘贴(移位插入xmodmap)到纳米我得到“使用X选择复制”
  • 我在这里粘贴(编辑|粘贴)-> Firefox中的文本
  • 在MacVIM中粘贴(编辑|粘贴),我得到“在Firefox中显示文本”
  • 粘贴到/ usr / bin / vim(非图形)中,我得到“使用X选择复制”

如何启用X和Cocoa之间的“剪贴板共享”?

我用来粘贴到X中的xmodmap是:

xmodmap -e "keycode 84 = Insert"

其中84是数字键盘的Enter键。因此,按Shift Enter键可以粘贴。


这在X应用程序中是否一致?您是在尝试普通的xterm还是类似的尝试,而不是尝试vim使用自己的缓冲区?您正在运行哪个版本的OS X?我的剪贴板已在10.5.7中按预期在Cocoa和X11之间共享。
jtb

嘿jtb,谢谢您的帮助。我使用vim并熟悉使用其内部缓冲区的问题。我通常会作弊并切换到编辑模式,然后从gvim(或MacVim的)编辑菜单粘贴。我在帖子中添加了一些额外的信息,以阐明您问题的其他部分。
kwutchak

啊,谢谢你的额外信息。尽管第3步中的粘贴有效(使用中键,但没有映射“插入”),但我基本上看到的是您所描述的内容。如果在X11中选择了文本,Command-C似乎确实会复制到本机剪贴板中,但是我明白了您的意思是,使用本机X复制/粘贴操作无法正确同步。
jtb

对于最新版本的OSX(我使用10.12),可以进行以下工作:stackoverflow.com/a/9525347/1353267
Samveen

Answers:


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首选项>>粘贴面板公开这些选项。


此行在我的xterm上键入并复制到...;)此行成功粘贴回我的xterm ...;)这是我的妻子不理解此修复程序的满意度的另一种情况!非常非常感谢你。
kwutchak

感谢您的询问。Mac使我习惯于按Cmd + C的程度,以至于我不知道自己缺少什么。但是我很高兴现在在我的配置中有了这个。
jtb

我已经安装了XQuarts并更改了它的选项。当我ssh到启用了XForwarding的远程系统(在两个系统上)并使用xclip(例如:ls | xclip)将内容添加到剪贴板时,本地系统(mac os x)上的剪贴板不会更改。我想念什么?
cwd 2012年

4
我认为要写入的正确文件是org.macosforge.xquartz.X11
Keith Smiley 2014年

2

您也可以重新编译vim-7.3并将以下内容添加到.vimrc中:

set clipboard=unnamed

然后,您将可以在vim中执行“ yy”并使用Cmd + V粘贴到可可中。反之亦然:在可可中用Cmd + V复制并在'p'中粘贴在vim中


请注意,您的vim必须在带有clipboard选项的情况下编译才能起作用。您可以通过执行查看它vim --version | grep clipboard。如果显示+clipboard,那么您就很好。如果显示-clipboard,则将不起作用。
egarcia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.