Emacs "Shell"モードでは、 `ls`に使用される色の変更は機能しません。

Emacs "Shell"モードでは、 `ls`に使用される色の変更は機能しません。

フォローするhttps://unix.stackexchange.com/a/94508/674使用する色を変更しますls。これはbashで動作します。

Emacs(Mxシェル)の「シェル」モードでバッファを開くと、変更は機能しません。 Emacs "Shell"モードに同じ変更を適用する方法が疑問に思います。

答え1

一部のバージョンでは、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, 

これは、Emacs独自のブランドANSIコードをサポートする私が作成したTerminfoエントリです(太字、イタリック体、アンダースコアを別々の属性として使用して8つの色のみをサポート)。にコンパイルしてくださいtic dumb-emacs-ansi.ti

次に、.bashrcに追加します。

if [ "$TERM" = dumb ] && [ "$INSIDE_EMACS" ]; then
    export TERM=dumb-emacs-ansi COLORTERM=1
fi

Bashを再起動しなくても、既存のシェルセッションでエクスポートラインを実行して更新できます。

答え2

Emacsshellモードは、シェルと文字列のみを交換する愚かな端末です。色設定などの端末エスケープシーケンスを許可しません。 emacsで端末全体が必要な場合はを使用してくださいM-x term。 (これを完了したら、C-c k;を使用して終了し、term完全な端末エミュレータなので、すべての一般キーを取得できます。)

編集:角かっこが提案されていますが、色を受け入れているtermようで、何とかその事実を認めません。shell-models

関連情報