https://unix.stackexchange.com/a/94508/674 に従って、ls
で使用される色を変更しました。これはbashで機能します。
Emacs(M-x Shell)で「シェル」モードのバッファーを開くと、変更が機能しません。同じ変更をEmacsの「シェル」モードにどのように適用できるのでしょうか。
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を再起動せずに更新できます。
Emacs Shell
モードは、シェルと文字列を交換するだけのダム端末です。色を設定するような端末エスケープシーケンスは許可されません。 emacs内で完全なターミナルが必要な場合は、M-x term
を使用してください。 (これを行った後、C-c k
で終了できます。term
は完全なターミナルエミュレーターであるため、すべての通常のキーを取得します。)
編集:term
を使用するという提案は有効ですが、Shell-mode
は確かに色を許可しているようで、ls
はどういうわけかこの事実を認識しません。