如何在matlab中将字符串(例如,pwd)复制到PRIMARY?

时间:2015-11-13 00:19:49

标签: matlab terminal

众所周知,使用粘贴可以将字符串复制到CLIPBOARD。

paste('copy',pwd)

但是如何将字符串复制到linux中的PRIMARY,以便中键足以将其粘贴到其他终端?

由于

更新

发现一旦在bash中使用matlab命令行模式:

matlab -nodesktop

kill(ctrl + k)和yank(ctrl + y)不起作用,具体来说,提示符下的输入语法可以被ctrl + k杀死而不能被ctrl + y拉回来。也许了解如何将字符串粘贴到PRIMARY也可以解决这个问题。

3 个答案:

答案 0 :(得分:1)

xclip程序可以执行此操作(如果尚未安装,您可以安装它,因为有通用系统的软件包,如Debian和Fedora):

  

从标准输入或从一个或多个文件中读取,并使数据可用作X选择以粘贴到X应用程序中。将当前X选择打印到标准输出。

讨论:

答案 1 :(得分:1)

你的问题是"如何在linux中将字符串复制到PRIMARY,以便中间[鼠标]键足以将其粘贴到其他终端?"。

Thomas Dickey用xclip指出了正确的方向。您写道,您需要更多详细信息。

以下是一些matlab代码形式的这些细节。假设您要放置字符串"示例字符串"进入主X11选择:

data = 'Example String';
system(['echo "' data '" | xclip -selection primary']);

您现在可以粘贴"示例字符串"使用鼠标中键进入同一X11显示器上的任何其他终端。

在此处使用echo将字符串传递给xclip只是演示工作代码的最快方式。如果您的字符串包含shell特有的字符,或者如果用户可以指定该字符串的内容,则不应该像这样使用它,而是将字符串保存到文件然后调用

system('xclip -selection primary filename_where_you_saved_the_string');

您需要安装xclip才能使用此方法。 xclip为您与xserver对话。具体来说,当你启动它时,它告诉xserver它有主要选择。然后,当其他一些xclient想要访问主要选择的内容时,它会响应这些查询。最后,当另一个xclient获取主要选择时,它会退出。在那之前,它可以方便地在后台运行,因此它不会阻止你的matlab代码。

请注意,xclip不是您唯一的选择。您还可以在mex文件中与xserver选择进行交互。但是当像xclip这样的工具已经存在时,这会太复杂了。

在问题的更新部分,您希望了解如何使用matlab以编程方式设置X11主要选择,可能有助于您在matlab -nodesktop模式下实现更好的基于键盘的命令行编辑,尤其是在切割部件方面光标右侧的命令行,然后将该部分粘贴到其他地方。

我很遗憾地告诉你,新的理解对此没有帮助。在-nodesktop模式下,matlab交互式命令行编辑根本不与xserver选择交互。只有包含终端仿真器。 Mathworks必须在-nodesktop模式下修复命令行编辑,但我怀疑他们是否愿意投入这种几乎不用的用户界面模式。然而,如果我是你并且想要这种可能性,我会向mathworks提出一个错误请求#34; yank" -nodesktop模式的键盘快捷键。

答案 2 :(得分:0)

如果你在带有--nodesktop的BASH shell中运行matlab,那么它的行为就像任何BASH shell一样。

在我的gnome-shell框中,突出显示文本会将其放入UNIX剪贴板并粘贴鼠标中键。这应该适用于大多数窗口。

要将文本复制到桌面的剪贴板(如gnome-shell),必须知道他们正在使用的teriminal窗口的快捷方式。对于gnome-terminal,默认为“CTRL + SHIFT + C'”,我相信您可以配置自己的快捷方式。

要从您桌面的剪贴板粘贴,gnome-terminal的默认设置为CTRL+SHIFT+V