更改 `ls` 使用的颜色在 Emacs“Shell”模式下不起作用

Tim*_*Tim 3 ls colors emacs

我按照https://unix.stackexchange.com/a/94508/674更改ls. 这在 bash 中有效。

当我在 Emacs(Mx shell)中打开“Shell”模式的缓冲区时,更改不起作用。我想知道如何将相同的更改应用于 Emacs“Shell”模式?

Ran*_*832 5

某些版本ls需要从 terminfo 数据库了解终端支持哪些颜色代码。

首先,创建以下文件(dumb-emacs-ansi.ti):

dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes,
    am,
    colors#8, it#8, ncv#13, pairs#64,
    bold=\E[1m, cud1=^J, ht=^I, ind=^J, op=\E[39;49m,
    ritm=\E[23m, rmul=\E[24m, setab=\E[4%p1%dm,
    setaf=\E[3%p1%dm, sgr0=\E[m, sitm=\E[3m, smul=\E[4m, 
Run Code Online (Sandbox Code Playgroud)

这是我创建的一个 Terminfo 条目,支持 Emacs 自有品牌的 ANSI 代码(仅支持 8 种颜色,具有粗体、斜体和下划线作为独立属性)。用 编译它tic dumb-emacs-ansi.ti

然后添加到您的 .bashrc:

if [ "$TERM" = dumb ] && [ "$INSIDE_EMACS" ]; then
    export TERM=dumb-emacs-ansi COLORTERM=1
fi
Run Code Online (Sandbox Code Playgroud)

您只需在现有 shell 会话中运行导出行即可更新它,而无需重新启动 bash。