如何在ESS中重命名R会话?

8

我之前问过如何在ESS中切换R会话, 使用C-x C-s大大加快了我的工作流程。

但是,如果我有多个R会话(即使只有3个),很难记住哪一个是R,哪一个是R:2,哪一个是R:3。是否有一种方法可以让ESS、Emacs或tramp根据运行R的服务器/目录自动命名不同的r会话?


你之前的回答已经被修改,提到了“uniquify” - 你试过了吗? - Nicholas Riley
1
@Nicholas 是的,我已经尝试过使用uniquify,但是会话仍然被命名为RR:2等等。不确定原因,即使在阅读了http://www.gnu.org/software/emacs/manual/html_node/emacs/Uniquify.html之后。 - David LeBauer
1
@David 看起来需要明确缓冲区名称和进程名称之间的重要区别。据我所知,uniquify有助于清理缓冲区名称。当您运行ess-switch-process时,您正在从进程列表中选择,而不是缓冲区。根据这个答案,看起来您无法更改进程的名称,因此您被卡住了。尽管如此,我很想能够完全按照您的要求做到这一点! - Daniel Kessler
1
@DanielKessler 我已经更新了我的回答。在最近的ESS版本中,<kbd>C-c C-s</kbd>是针对缓冲区名称而不是进程名称进行操作的。 - VitoshKa
@VitoshKa 太棒了!希望我能再给你一个赞来更新。 - Daniel Kessler
2个回答

6
[更新]
ESS的新版本(> 12.09)使用缓冲区名称而不是内部进程名称。现在,您可以使用“M-x rename-buffer”重命名下级缓冲区,并且这将完成正确的操作。您还可以配置“ess-gen-proc-buffer-name-function”以设置启动时进程缓冲区自动自定义重命名。
[/更新]
R、R:2和etk是ESS中的进程名称。我大约一年前在ess邮件列表上问过这个问题。似乎没有直接更改此行为的简单方法。这是一个emacs功能,而不是ESS。您可以更改与进程关联的缓冲区名称,但进程名称将保持不变。
根据我所见,Uniquify会更改缓冲区名称。无论如何,在最近的emacs版本中,具有相同文件名的缓冲区都用部分路径指定,以使它们唯一。因此,看起来uniquify已被采用为文件的基本emacs,但未用于其他东西,例如进程名称。

2

我不确定关于自动重命名(您可以在ESS邮件列表上询问),但有时我会使用M-x rename-buffer,它会按照预期执行操作。


我看到了,但实际上并没有观察到使用uniquify的任何效果。从我的理解来看,uniquify应该是我问题的答案。 - David LeBauer
我不能再帮你了。对我来说,uniquify 提供了一个更有用的缓冲区,因为具有相同文件名的缓冲区会分别 a) 消歧(foo.cpp<someDir>,foo.cpp<otherDir>),b) 从缓冲区列表中进行更轻松的搜索(贪婪匹配)。 - Dirk Eddelbuettel

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