Emacs的远程shell(Emacs remote shell)

2019-06-26 02:09发布

我倾向于运行我在Emacs的外壳,但是当我用它来ssh到另一台计算机这打破制表完成。 有没有办法来解决这个问题?

Answer 1:

尝试:

M-x cd /hostname:/current/path/in/the/shell

这应该建立安热FTP(或流浪汉),然后按TAB键完成的路径应为壳正常工作 - 直到你登录到不同的机器。

你可以建立一个通信情报处理过滤器,当你键入认识到ssh来自动为你做的,但是这是很难得到正确的,因为它在退出应恢复ssh会话,而不是由其他用途被欺骗exit

对于一个自动化的解决方案,我建议增强我个人使用的方法 ,以保持与Emacs的外壳缓冲区的当前工作目录同步。 只需添加的信息的一个额外位与主机名,并用它来设置主机名和路径如上所示。



Answer 2:

在另一个线程中,有人提到ESHELL这是我从来没有用过,但我用SSH试了一下,不错整合各种正在发生的事情。 时间ESHELL学习。



Answer 3:

你可以尝试的Mx ANSI长期托管你的shell如果你获得与键映射意外行为。 说了这么多我不能再产生你的描述上您的设置问题。



Answer 4:

我有一个类似的问题,我想通过编辑删除计算机上的我的〜/ .bash_login文件和追加解决它

export TERM=xterm

我使用的OS X和有问题连接到Linux(Debian的莱尼)时



Answer 5:

我只写了一个小功能来打开远程主机上的外壳。 该cd之前调用shell得到选项卡完成的工作。

这可能是不同的比你想要的,因为它会打开一个新的外壳,而不是在本地shell ssh'ing。 除此之外,你可以看看黑客emacs的目录跟踪 (或看到还有谁具有)。

(defun remote-shell (&optional host)
  "Open a remote shell to a host."
  (interactive)
  (with-temp-buffer
    (let ((host (if host host (read-string "Host: "))))
      (cd (concat "/scp:" host ":"))
      (shell (concat "*" host "*")))))

(defun myserver-shell () (interactive) (remote-shell "myserver"))


Answer 6:

在缓冲液A调用MX壳将切换到壳缓冲液B; 通常是shell。 毫不奇怪,如果有必要创建B中。 前缀ARG将导致它要求B.的名字如果A是一个远程主机的话,shell将在远程主机上运行上观看的东西。 但是,只有当它找不到一个现有B.在这一点上,文件名完成会工作。

对于如何与这个在Emacs的维基鼓捣一些注意事项。 例如,见我的功能壳在本节中 ,这将延长B上远程文件获取远程炮弹的默认名称。 我通过做同样的事情, 建议外壳功能 。

文件名自动完成功能将正常工作。 命令自动完成? 少一些。 对我来说块emacs的,然后不实际工作。



Answer 7:

我用dired访问远程计算机并打开外壳那里。

这里是我使用的功能,取自和改性吉洪Jelviss' emacs的配置 :

(defun anr-shell (buffer)
  "Opens a new shell buffer where the given buffer is located."
  (interactive "sBuffer: ")
  (pop-to-buffer (concat "*" buffer "*"))
  (unless (eq major-mode 'shell-mode)
    (dired buffer)
    (shell buffer)
    (sleep-for 0 200)
    (delete-region (point-min) (point-max))
    (comint-simple-send (get-buffer-process (current-buffer)) 
                        (concat "export PS1=\"\033[33m" buffer "\033[0m:\033[35m\\W\033[0m>\""))))

例:

(anr-shell "/vagrant@localhost#2222:/vagrant/")


文章来源: Emacs remote shell
标签: shell emacs