フォローする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-mode
ls