我使用Ubuntu8.10和emacs-snapshot。在emacs上运行shell模式并输入“ls”显示转义码:
screenshot http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png
如何获得我期望的输出?
答案 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 term
或M-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
。