【问题标题】:zsh in Emacs output junk charactersEmacs中的zsh输出垃圾字符
【发布时间】:2011-11-21 14:35:59
【问题描述】:

无论我在Emacs中使用term还是ansi-term启动zsh,我都会遇到这个问题,每次输入命令,输出都会有一些垃圾字符,例如:

[ruby-1.9.2] ~ pwd 2;pwd1;pwd/用户/tyraeltong

"2;pwd1;pwd" 输出错误,不知道其他人是否也遇到同样的问题?我在这里Getting Emacs ansi-term and Zsh to play nicely 找到了一个类似的帖子,但是通过 [[ $TERM == eterm-color ]] && export TERM=xterm 我仍然看到垃圾字符。

【问题讨论】:

  • 这是由您的.zshrc 中的某些内容直接或间接引起的问题。可能是一个糟糕的提示设置,或者对正在运行的终端做出无根据的假设。发布您的.zshrc
  • 其实我并没有在我的 .zshrc 中进行任何自定义,而是使用了 .oh-my-zsh:github.com/robbyrussell/oh-my-zsh
  • 我也有同样的问题(oh-my-zsh)
  • 你找到解决这个问题的办法了吗?

标签: emacs zsh emacs23 term


【解决方案1】:

Emacs 不适合 ZLE,所以我的 ~/.zshrc 中有这个:

if [[ -n ${INSIDE_EMACS} ]]; then
    # This shell runs inside an Emacs *shell*/*term* buffer.
    prompt walters
    unsetopt zle
fi

【讨论】:

  • 感谢回复,但使用此设置,我仍然看到额外的位,例如:2;LS -G -lhF1;lstotal 72
  • 嗯,INSIDE_EMACS 设置了吗?例如,在 emacs 中执行 M-x shell,并在其中执行 echo $INSIDE_EMACS。它应该输出类似“24.0.97.1,comint”的内容。如果不是,那么该变量不是由 emacs 设置的(可能是因为您的 emacs 太旧了?!)。在这种情况下,您可以将测试更改为 [[ ${TERM} == "dumb" ]],这也应该可以工作。
  • 啊,你的 ~/.emacs 中可能还需要这个:(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
  • 嗯,echo $INSIDE_EMACS 将输出类似“]2;echo 24.0.92.1,comint]1;echo24.0.92.1,comint”的内容。我还将(add-hook)添加到 .emacs 文件中,仍然看到额外的位...顺便说一句,您在 Emacs 下使用 zsh 的方式是什么?是“术语”还是“外壳”?
  • 我使用M-x shell 而上面的add-hook 仅适用于此。在完成M-x shell 之后,ls --color 应该以彩色列出文件。如果你仍然得到原始颜色转义序列,那就有问题了。
【解决方案2】:

找到解决方案in the related post mentioned earlier

简而言之,在 emacs M-x package-install 中安装 multi-term。 M-x multi-term 启动一个外壳,包含 oh-my-zsh 必须提供的所有花里胡哨

【讨论】:

    【解决方案3】:

    这可能是具有 bash 语法的错误 PROMPT_COMMAND。试试:

    export PROMPT_COMMAND=""
    

    看看有没有帮助。

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2015-04-29
      • 2023-03-20
      • 2011-05-03
      • 2018-02-14
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 2013-12-08
      相关资源
      最近更新 更多