Emacs

emacs shell 模式(Mx shell)

  • December 24, 2014

當我使用 emacs Mx shell模式時,我在螢幕上看到奇怪的字元,我認為這些字元與我的提示(包括行尾)和顏色的使用有關。

所以,這是我在終端上看到的:

mperdikeas@thorin:~#
$ 

這是我在 Emacs shell緩衝區中看到的內容:

^[]0;mperdikeas@thorin: ~^Gmperdikeas@thorin:~#
$  

這是我的.bashrc的相對部分:

if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[\033[1;32m\]\u@\h\[\033[00m\]:\[\033[1;33m\]\w\[\033[00m\]#\n$'
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w#\n$ '
fi 

如何配置 emacs 以在shell緩衝區中正確顯示提示?

可能有一個更優雅的解決方案,但這對我有用。在 .bashrc 中任何與提示相關的行之後,插入以下內容,調整 PS1 的值以適合:

# Keep it simple if running in emacs.
case "$TERM" in
 dumb)
   PROMPT_COMMAND=
   PS1="\u@\h:\W$ "
esac

我認為您最好在 shell 模式設置中啟用 ansi-color 。

(eval-after-load 'shell
  '(progn
     (autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
     (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on t)
     t))

引用自:https://unix.stackexchange.com/questions/61836