我倾向于运行我在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/")