【问题标题】:emacs tramp over an unreliable connectionemacs 跳过不可靠的连接
【发布时间】:2013-05-29 16:25:22
【问题描述】:

我想在 local Emacs 下的 remote 框上运行 R(我确实想在其上运行 Emacs遥控盒)。

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

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

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

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

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

【问题讨论】:

    标签: r emacs tmux gnu-screen tramp


    【解决方案1】:

    这是使用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

    【讨论】:

    • 感谢您的代码。现在,当启动远程进程时,该进程在主目录中启动。我试图在特定目录中远程修改您的代码打开 R,但在实现这一点时遇到了一些问题。你有什么方法可以选择进程应该从哪个目录开始?
    • 好的,我在远程主机完成工作后添加"cd ~/Documents/R;" 行。再次感谢您的代码,它为我省去了很多麻烦。
    • @DJJ:我加了R-remote-directory,谢谢你的建议。
    【解决方案2】:

    这里是如何在远程屏幕会话中使用 ESS 和 R:

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

    • 开始屏幕会话

    • 分离它

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

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

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

    • 开始R

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

    本文http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/有更多细节、截图和键绑定

    【讨论】:

    • ESS 开发人员似乎认为ess-remote 已过时。
    • 嗯,函数本身相当简单,它所做的只是设置一些变量并初始化缓冲区的低劣模式以及一些特定于语言的自定义。我经常使用 ess-remote 来运行远程 R 和 SAS 进程,并且该功能没有任何问题。您也可以将它与 R 启动的 ssh.el 一起使用
    • @sds 作为 ESS 开发人员,我可以保证 ess-remote 得到维护并且正在改进。我正在研究与 ess 和 tramp/ess-remote 的屏幕集成。欢迎任何想法建议。
    • 嗯,这行不通。 Emacs shell 将您的 TERM 设置为哑。当您 ssh 到远程主机时,您会发现该屏幕不支持您的终端设置。 “需要清屏功能。”
    • 在 emacs 中启动 shell 后尝试设置 TERM=xterm,然后 ssh 等。
    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2022-12-20
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2019-11-13
    相关资源
    最近更新 更多