我能否更改MATLAB中的提示符?

12

我从不使用GUI,而是总是在终端内工作(也是全屏的,没有标题栏),并设置了-nodesktop和-nodisplay选项。我还连接到不同的服务器来运行Matlab,每个服务器都有不同的限制,以防止占用计算资源。由于很难记住我所在的服务器,特别是如果我有多个会话打开,因此我想知道是否可以更改提示来显示服务器名称。尽管我尝试了很多次,但我找不到解释如何操作的资源(我开始认为Mathworks不支持它)。我知道一个解决方法是简单地编写一个对system('hostname')的函数调用,并将该函数放入路径中,这样就像输入pwd查找目录一样容易。我想知道是否有更优雅的解决方法。


@user564376:不使用集成开发环境的原因是什么? - zellus
我通过ssh连接到服务器并在那里工作。尽管我的连接非常好,但通过X11流式传输所有GUI会占用资源(更不用说JVM了)。从终端工作并使用“visible”“off”打印所有图形要快得多,然后将其推回我的笔记本电脑并在本地查看。 - user564376
1个回答

12

您可以在MathWorks文件交换中心找到一篇文章,它可以帮助您完成这个操作:setPrompt,作者是Yair Altman。我在R2010b版本中使用这个工具时发现了一个警告信息:

Warning: Possible deprecated use of set on a Java callback. 
> In setPrompt at 115

我能使用warning函数来抑制警告,代码如下:

warning('off','MATLAB:hg:JavaSetHGProperty');

而这就是我如何使用system函数将提示符更改为主机名:

>> [~,systemString] = system('hostname');
>> setPrompt([deblank(systemString) '>> ']);
P11-4504>>

使用函数deblank可以从字符串中删除结尾的空格(在本例中为换行符)。

注意: 上述更改(抑制警告和修改提示)在您退出并重新启动 MATLAB 后不会持久存在,因此您可以将上述代码放入您的startup.m 文件,以便每次启动新会话时自动应用它们。


1
这个答案似乎不适用于更新的版本(MATLAB 2018a),Altman代码现在会发出关于响应性的警告。有新的方法吗? - Alec Jacobson
1
@AlecJacobson:我会在“setPrompt”提交页面上留下评论,指出这一点。 - gnovice
尽管我完全理解为什么您最初将此问题标记为重复@gnovice,但我认为它可能足够不同,以便删除重复标记。我添加了有关问题之间差异的简短说明,并且还链接到了这个问题-以便需要它的用户可以被重定向。显然,您在这里拥有更多的经验,所以我会把它交给您,而且无论如何我都会尊重您的决定。 - Lucubrator
@Lucubrator:这些问题之间唯一的主要区别就是提示字符串的值(主机名与时间戳),而Yair的setPrompt的帮助文本已经详细介绍了如何创建时间戳。老实说,我认为这并不需要完全新的问题和答案。 - gnovice
@Lucubrator:目前我建议保持原样,带有指向原始内容的链接。无论是完全相同还是几乎相同,重复内容通常不会被删除。它们被认为具有价值,因为它们通过稍微不同的重新表述扩大了搜索目标的数量。 - gnovice
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接