Emacs shell有问题

时间:2009-04-01 08:39:11

标签: emacs

我使用Ubuntu8.10和emacs-snapshot。在emacs上运行shell模式并输入“ls”显示转义码:

screenshot http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png

如何获得我期望的输出?

6 个答案:

答案 0 :(得分:45)

您可以使用支持颜色的AnsiTerm,也可以为普通shell启用AnsiColor

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

答案 1 :(得分:5)

此外,您可以选择其他外壳:M-x termM-x eshell。前者提供了一个比shell-mode更接近真实终端模拟器的界面(一旦你启动它,你就可以退出C-c C-j的模式并再次进入C-c C-k) 。后者是用Elisp编写的shell实现(您可以使用常见的shell命令以及评估Lisp代码)。

答案 2 :(得分:3)

扩展vatine的答案,您可以在.cshrc(.tcshrc / .bashrc)中添加包含环境变量INSIDE_EMACS检查的内容。

例如(来自我的.tcshrc):

if ( $?INSIDE_EMACS ) then
   alias l 'ls --color=never'
endif

答案 3 :(得分:2)

M-x ansi-color-for-comint-mode-on

答案 4 :(得分:1)

问题是“l”正在尝试着色输出,而emacs没有任何输出。请尝试以下方法:

$ unalias l
$ alias l ls --color=never

答案 5 :(得分:1)

我将alias ls ='ls --color=auto'包裹在〜/ .bashrc中:

case "$TERM" in
xterm*|rxvt*)
    if [ -x /usr/bin/dircolors ]; then
        alias ls='ls --color=auto'
        ...
    fi
    ;;
*)
    ;;
esac

这会禁用在emacs中使用color=auto