spacemacs使用tramp的连接问题

当使用spacemacs用tramp编辑远程设备上的文件时,如果登录远程设备的用户默认SHELL类型为zsh(bash正常)时会显示Waiting for prompts from trmote shell,然后失败,最后结果如下图:

按照emacswiki上的方法在远程设备上的.zshrc中添加如下代码但是还是不行。

if [[ "$TERM" == "dumb" ]]
then
  unsetopt zle
  unsetopt prompt_cr
  unsetopt prompt_subst
  unfunction precmd
  unfunction preexec
  PS1='$ '
fi

在spaceemacs配置文件见中添加 (eval-after-load 'tramp '(setenv "SHELL" "/bin/bash"))也不起作用。

emacs 版本 24.5.1 tramp 版本 2.2.11-24.5 zsh 版本 5.1.1,使用oh-my-zsh配置

求教有办法解决这个问题么。

没怎么用过 Zsh,刚才在自己的 VPS 上试着把 SHELL 从 Bash 调成 Zsh,Tramp 确实出了问题,之后创建 ~/.zshrc,再加入

[ $TERM = "dumb" ] && unsetopt zle && PS1='$ '

现在用 Tramp 就正常了。

根据 EmacsWiki 上的讲法,如果你原来就有 ~/.zshrc 的话,你可能需要把下面这一句放到文件的头部:

[[ $TERM == "dumb" ]] && unsetopt zle && PS1='$ ' && return

  • Zsh 5.1.1 (无个人配置)
  • Emacs 25.1(无个人配置,从 -Q 启动)
2 个赞

谢谢,怪我不够仔细,非常惭愧,系统原本使用了oh-my-zsh,按照您的的方法确实解决了问题。

可以试试eshell,想要类似oh-my-zsh的特性也能做到,用lisp拓展也不会影响原先环境变量。

谢谢,有时间再研究一下。