前々からやろうと思っていてやっていなかった Emacs の 256 色表示をついに成功させました。実はこれ、今まで何度かトライしてたのですが、コンソールまでは 256 色になるのですが、肝心要の Emacs の方が 8 色のままでどうしようもありませんでした。しまいには間違って apt-get update とかしてしまい、せっかく 256 色表示に設定した screen を初期値に戻してしまうミスなんかもあって、やる気がなくなっていたわけですw
けど今回この おまえの日記 - 256 color で、表示出来たとのことだったので僕でも出来るかもと思ったのでした。しかもリンク先に EmacsWiki: PuTTY なるものがあって、なんか英語ですけど Emacs を 256 色で表示する設定が載ってます。それだけじゃなくて色々リンクを辿った結果、もっといい物まで発見!全部英語なため頑張って理解出来る限り読んで設定してみました。その結果見事Emacsでの256色表示に成功し、 cperl-mode でも Meadow と同じような色で表示できるようになりました。
それと、頑張ってやった結果わかったことですが、この 256color 化あまりにも日本語での参考資料が少なくて苦労したんで僕のなりの手順ですが公開します。誰かの参考にでもなればうれしいですね。
大まかな手順
- 256 色表示出来るか確認
- screen を 256 色に対応させるためにソースから debild
- screen 設定ファイルに 256 色表示の設定を書く
- PuTTY を 256 色用に設定
- Emacs 用にカラー表示のための Elisp を作る
- Emacs 用 ColorTheme をダウンロードしてくる & 設定
- cperl-mode 最新版をダウンロードしてくる
256 色表示出来るか確認
まず、The 256 color mode of xterm から 256colors2.pl をダウンロードしてくる。screen 起動後、
% perl 256colors2.pl
で何色表示出来るか確認する。この時点では確実に 16 色表示のはず。
screen を 256 色に対応させるために debild
qootas.org/blog - 256 colors: putty + vim + screen を参考に
% apt-get sorce screen
% cp -p screen_4.0.2-4.1.diff.gz screen_4.0.2-4.1.diff.gz.orig
% vi screen_4.0.2-4.1.diff.gz
でコメントアウトされている 256colors の部分を修正。差分をとる時に以下のように表示出来たら成功。余談になるが、実は僕この時点で日本語ロケールの関係で差分をとるのに失敗。ロケールを英語に変えたらうまく動きました。
% zdiff screen_4.0.2-4.1.diff.gz screen_4.0.2-4.1.diff.gz.orig
8630,8631c8630,8631
< + --with-sys-screenrc=/etc/screenrc \
< + --enable-colors256
---
> + --with-sys-screenrc=/etc/screenrc
> +# --enable-colors256
このあと diff ファイルのファイルサイズと md5 ハッシュ値を修正しないといけないんだけど、どう直したらいいのかわからないので先に
% dpkg-source -x screen_4.0.2-4.1.dsc
を実行してみる。そうするとエラーを返すんだけど、どこがどう間違っているのか教えてくれるのでそれを参考にエディタで screen_4.0.2-4.1.dsc を修正する。
% vi screen_4.0.2-4.1.dsc
エディタで書き換えをおこなった後
% cd screen-4.0.2
% debuild -us -uc
% dpkg -i ../screen_4.0.2-4.1_i386.deb
ディレクトリを移してdebild してインストール。
screen 設定ファイルに 256 色表示の設定を書く
screen は debild 出来たので次に .screnrc に設定を書く。
## http://frexx.de/xterm-256-notes/
# erase background with current bg color
defbce "on"
# do not use 'screen-bce'
term xterm-256color
screen でも xterm を 256color で表示しますよって設定。
PuTTY を 256 色用に設定
今度はアクセスする仮想端末 PuTTY の設定。設定自体は難しくなく、PuTTY の設定で以下のように設定。
- [ウィンドウ] [色] xterm 256 色モードを使うことを許可する、にチェックを入れる
- [ウィンドウ] [色] 太文字のテキストは別の色にする、のチェックをはずす
- [接続] [データ] 端末タイプを表す文字列、に xterm-256color と入力
この時点で xterm screen PuTTY の 256 色化は完了。確認のためこの前にダウンロードしていた 256colors2.pl を実行してちゃんとカラー表示出来るか確認しておく。
Emacs 用にカラー表示のための Elisp を作る
EmacsWiki: PuTTY を参考にしてカラー設定の Elisp 、emacs21-256color-hack.el を作り .emacs ファイルに
(load “emacs21-256color-hack.el”)
と加える。emacs21-256color-hack.el はロードパスの通った site-lisp ファイルなどの中に保存しておく。
Emacs 用 ColorTheme をダウンロードしてくる & 設定
このままだとまだ 256 色表示は出来ないはずなので、Index of /color-theme から Emacs 用カラーテーマをダウンロードしてきて展開。展開したあと color-theme.el ファイルと themes/ フォルダをロードパスの通ったフォルダにコピーな移動なりする(実はMakeファイルもあるのでコマンドラインからインストール出来るのかもしれないんですがREADME読んだ限りだと記述がないので諦めました)。それから .emacs に
(require 'color-theme)
(color-theme-initialize)
(color-theme-カラーテーマ名)
を入れておく。あと
(global-font-lock-mode t)
この記述もないと困ると思う。あと、カラーテーマ自体はいっぱいあって Emacs で
M-x color-theme-select
って入れるとサンプルの名前がいっぱい出てくるのでエンターキー選べば色が変わる。GNU Emacs Color Theme Test - Emacs Lisp - Mon Feb 21 17:09:13 2005 こちらにもサンプルのイメージがあるので参考にすると良いと思います。Meadow と同じカラーで使いたい場合は Dark Laptop というカラーを選べば OK なはずです。
cperl-mode 最新版をダウンロードしてくる
とりあえず、ここまでの時点で Emacs も 256 色表示出来るようになっているはず。Emacs を使っているなら perl ruby python の内のいずれかの言語を使っていると思われますが、Emacs が初期設定のままですと Elisp 自体も古いのでなるべく言語-modeのファイルは最新版をダウンロードしてくることをお勧めします。僕は cperl-mode を使っているのですが、ファイルが古かったためカラー表示もすこし足りなくて白文字の部分が多くなってました。
cperl-mode の最新版は Index of /~ilya/software/emacs/ からダウンロード出来るのでロードパスの通ったフォルダに保存しておきましょう。これさえダウンロードすれば、Meadow と同じ色で Emacs が使えるはずです。
参考リンク
- qootas.org/blog - 256 colors: putty + vim + screen
- EmacsWiki: PuTTY [emacs21-256color-hack.el]
- Index of /color-theme [カラーテーマのファイル]
- GNU Emacs Color Theme Test - Emacs Lisp [カラーテーマ一覧]
- EmacsWiki: ColorTheme
- Index of /~ilya/software/emacs/ [cperl-mode]
- EmacsWiki: CPerlMode
追記
ターミナルのカラー表示には ncurses-term が必須っぽい。最新版を持ってくるのが吉。あと screen はパッケージじゃなくてソースを持ってきて自分で configure 付けてビルドした方が簡単。
コメントする