12

我想在本地下的R远程机器上运行(我不想在远程机器上运行 Emacs)。 Emacs

我可以使用以下命令R在远程主机上运行TRAMP

(let ((default-directory "/user@remote:~"))
  (R))

一切正常,除了当连接remote丢失时,R死亡。这不好,因为这意味着我必须在重新R启动后重新加载所有数据,这需要时间。

是否可以告诉TRAMP使用持久终端?(GNU ScreentmuxMoshdtach)

另请参见emacs-devel线程tramp:sshx:(screen|tmux)

4

2 回答 2

10

这是使用dtach的另一种方法:

(defvar R-remote-host "remote-server")
(defvar R-remote-session "R")
(defvar R-remote-directory "~")
(defun R-remote (&optional remote-host session directory)
  "Connect to the remote-host's dtach session running R."
  (interactive (list
                (read-from-minibuffer "R remote host: " R-remote-host)
                (read-from-minibuffer "R remote session: " R-remote-session)
                (read-from-minibuffer "R remote directory: " R-remote-directory)))
  (pop-to-buffer (make-comint (concat "remote-" session)
                              "ssh" nil "-t" "-t" remote-host
                              "cd" directory ";"
                              "dtach" "-A" (concat ".dtach-" session)
                              "-z" "-E" "-r" "none"
                              inferior-R-program-name "--no-readline"
                              inferior-R-args))
  (ess-remote (process-name (get-buffer-process (current-buffer))) "R")
  (setq comint-process-echoes t))

打电话M-x R-remote RET RET RET RET

这个对我有用。

PS。问题的答案(与所提出的问题相反)是将einJupyter一起使用。

于 2014-03-28T03:42:49.167 回答
9

以下是如何在远程屏幕会话中将 ESS 与 R 一起使用:

  • ssh 到远程主机(在 emacs 之外)

  • 开始屏幕会话

  • 拆开它

  • 在 emacs ( M-x shell)中打开 shell

  • 在 emacs shell 中再次 ssh 到远程主机

  • 恢复屏幕会话 ( screen -r)

  • 开始 R

  • M-x ess-remote最后使用启动 R 的 shell 缓冲区将 ESS 附加到 R 进程

这篇文章中有更多详细信息、屏幕截图和键绑定http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/

于 2013-05-29T17:32:38.247 回答