emacs.png

Emacsの背景色を変更する方法を説明します。背景色を変更する方法は、何通り考えられますが、ここでは4通りの方法を紹介します。

初期化ファイルで設定する方法

関数 set-face-background を使ってをinit.elや.emacsで設定する方法です。

例えば、次のように記述します。

(set-face-background 'default "#303030")

この例では、 deafult Faceの背景色を #303030 に設定しています。

default はすべてのFaceの親になるので、これを変更すると全体に影響します。

ただし、背景色が個別に設定されている場合は、そちらが優先されますので、defaultを変更しても全く変化しません。

色の指定には、16進数のRGB数値、もしくは M-x list-colors-display を実行すると表示される色の名前が使えます。

set-face-background の他に set-face-foregraound などset-face-ではじまる関数がいくつかあります。これを使うことで背景色だけではんく、テキストの色やボールド、イタリックなど設定することができます。

Faceのカスタマイズ機能を使う方法

Emacs標準のカスタマイズ機能でFaceを設定することもできます。(set-face-background)のようなコードを書く代りに同じことをカスタマイズ機能で行なうだけです。

まずは

M-x customize-face

を実行して、face名に default を指定します。

customize-face画面が表示されるので、項目Background:に色を指定して、 Apply ボタンを押せば、即座に変更が反映されます。

この状態ではEmacsを再起動すると元の設定に戻りますので、今後も継続して使いたい場合は Apply and Save ボタン、または C-x C-s を実行して設定ファイルに反映させましょう。

注意点は、保存する前に、Foreground以外のチェックボックスはすべてOFFにしておいてください。そうでないと他の項目までいっしょに保存されてしまうため、次に説明する customize-theme を使うときに、設定が干渉してしまうことがあるからです。(テーマを使わないなら気にしなくてもいいのですが)

標準のテーマを利用する方法

テーマとは複数のfaceと変数の設定をまとめて管理する仕組みです。

テーマという名前から連想すると表示関連だけのように思えますが、実際にはCustomizeできる変数も対象なので、Emacsの環境まるごとテーマを切り替えることで制御できます。

Emacsには標準のテーマがいくつか最初から用意されています。標準のテーマはFaceの設定しか含んでいません。この中から選ぶだけでも十分使えます。

テーマを有効にするには、まず、 M-x customize-themes を実行してください。次のような画面が表示されます。

emacs-theme21.png 好きなテーマのチェックボックスを選択すると画面に即反映されます。背景色だけではなくフォント等も含めて一発で変わるのでいろいろ試してください。すべてのチェックをオフにすると、テーマもオフになります。

emacs-theme11.png これもEmacsを再起動すると元に戻りますので、継続して使う場合は Save Theme Settings を押下してください。設定ファイルに書き込まれます。普通に C-x C-s でもOKなのでかなりお手軽にコロコロ変更できます。

テーマを自作する方法

さらに踏み込んで、自分のテーマをつくるには

M-x customize-create-theme

をします。

既存のカスタマイズを新しいテーマに含めるか聞かれますが、最初はNOを選んでおいたほうがいいです。

emacs-theme3.png 例えばテーマ名をhelloと入力し、とりあえずdefaultフェイスの設定だけをして、 Save Theme を押下すると

~/.emacs.d/hello-theme.el

として定義ファイルが作成されます。 あとはこれをcustomize-themeで選べばOKです。

まとめ

これらの方法で一番手軽なのは「標準のテーマを利用する方法」でしょう。私は、その時の気分や、使用するPCによってテーマを変えています。これと customize-face を併用して細かいカスタマイズすることで自分の好みの環境を整えるようにしています。

Emacsの設定はとても奥が深い世界なので、他にもいろいろな設定方法がありそうです。

動作環境:GNU Emacs 25.0.50.1