我使用Ubuntu8.10和emacs-snapshot。在emacs的shell-mode下输入"ls"命令时会显示转义码:
截图链接 http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png
如何获得我期望的输出?
我使用Ubuntu8.10和emacs-snapshot。在emacs的shell-mode下输入"ls"命令时会显示转义码:
截图链接 http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png
如何获得我期望的输出?
M-x term
或M-x eshell
。前者提供的界面比shell-mode
更接近真正的终端仿真器(一旦启动它,您可以使用C-c C-j
退出模式,并使用C-c C-k
再次进入)。后者是用Elisp编写的Shell实现(您可以使用常见的Shell命令以及评估Lisp代码)。扩展vatine的答案,你可以在你的.cshrc (.tcshrc/.bashrc)中添加一个检查环境变量INSIDE_EMACS的代码块。
例如(来自我的.tcshrc):
if ( $?INSIDE_EMACS ) then
alias l 'ls --color=never'
endif
sh
及其兼容版本,可以使用test "$INSIDE_EMACS" && alias l='ls --color=never'
,但您可能希望使用函数而不是别名。 - tripleeeM-x ansi-color-for-comint-mode-on
alias ls='ls --color=auto'
:case "$TERM" in
xterm*|rxvt*)
if [ -x /usr/bin/dircolors ]; then
alias ls='ls --color=auto'
...
fi
;;
*)
;;
esac
这将禁用在emacs中使用color=auto
。
$ unalias l $ alias l ls --color=never