読者です 読者をやめる 読者になる 読者になる

イメージに染まるまで……

Mac,iOSなどAppleの製品についての記事や、セキュリティだったりGTDの記事を書いています。

Emacsを最低日本語で使えるように設定する

Emacs

このエントリーでは、Emacsを日本語で使うように設定します。私は最初にここでかなり苦労したので、ほぼlispをコピペするだけでも使えるような設定を書いておきたいと思います。Emacsのインストールは非常に多くの記事が検索すればヒットしますので、ここではとにかく、日本語を表示するのに困らないことに主眼を置いて説明します。環境は、(Mac)OSXです。

目次
1. Emacsを日本語環境にする
2. 日本語を正常に表示する~フォントの設定

使用環境
MacBook
OS:OSX Marverics 10.9.2
Emacs 24.3.1

1. Emacsを日本語環境にする

まず、Emacsを日本語環境にしなければいけません。こうすることでまずは、Emacsチュートリアルが日本語になるので、最低限の操作の説明を読んで勉強することが出来るようになります。

Emacsをインストールして一度開くと、ホームフォルダに不可視フォルダの.emacs.dが作成されます。このなかにinit.elというファイルを作って設定を書きこむことになります。

ここからコマンドの説明を入れますので、一応基礎として書いておきます。

C-x j

これはなに?

controlキーを押しながらxキーを押し、そのあとにjキーを押す、という意味です。

C-x C-s

これはなに?

controlキーを押しながらxキーを押し、そのあとにcontrolキーを押しながらsキーを押す、という意味です。

M-x eval-current-buffer

これはなに?

"M"というのはもともとMetaキーを指していましたが、今のPCのキーボードにはありません。何も設定していなければ(というのもEmacsはキーボードショートカットを自分でカスタマイズ出来てしまうからです。「キーボードショートカット」よりも「キーバインド」のほうが好まれますので、以降は「キーバインド」と呼びます。)、escキー(エスケープキー)のことです。

つまり、escを押してから、xキーを押し、そのあとにeval-current-bufferとタイプする、ということです。そのときにはEmacsの下のエコーエリアというところに打った文字が表示されます。ちなみに、C-xと押したときも、下のエコーエリアにそれが表示されます。

f:id:nya-0:20140315120107p:plain

間違ってしまったなら、とにかくC-gとタイプしましょう。操作がキャンセルされます。

ここから、本題です。

それと、全てなにも設定していない前提で書きます。

外部のエディタからinit.elを作成してもいいのですが、慣れだと思ってここではEmacsで編集します。

とりあえずEmacsを起動して、C-x C-fと打ってみてください。Find file:エコーエリアに表示されるので、~/.emacs.d/init.elと打ち込んでください。すると、ファイルが自動的に作成されるので、そのなかに以下のような記述を打ち込んでください。

;言語を日本語にする
(set-language-environment 'Japanese)
;極力UTF-8とする
(prefer-coding-system 'utf-8)

これで、間違いがないかどうか確認してみましょう。コマンドは上で例に挙げたM-x eval-current-bufferです。打ち込んだら、Enterを押してみてください。コピペなら、なにも起きないはずです。エコーエリアにエラーなどのメッセージがあれば、どこかが間違っています。

C-x C-sでファイルを保存し、いちどEmacsを終了させてみましょう。これも、コマンドで可能です。C-x C-cがそうです。ファイルを保存し忘れていると、本当に終了していいの?と(英語ですが)出てきてくれる設計です。

それからもう一度Emacsを開いてみましょう。試しにチュートリアルを開いてみましょう。チュートリアルの開きかたは、なにも設定していなければC-h tです。日本語になっているはずです!もし、基礎を学びたければ、Emacsについてくるこのチュートリアルはかなりいいトレーニングになりますよ。

2. 日本語を正常に表示する~フォントの設定

Emacsは、表示するフォントの設定がかなり細かく設定できます。画面の表示部分、英語と日本語、ひらがな、カタカナを違うフォントで表示することまでできてしまいます。

ここではまず、コピペでも出来るように私の設定をそのまま貼り付けてみます。

;; @font
;;デフォルトのフォントをInconsolataにする
;;Terminalで開く対策もする
(when window-system
;; 画面のフォントをInconsolataに
(set-face-attribute 'default nil
:family "Inconsolata"
:height 140)
(set-frame-font "Inconsolata")
;;以下は全て正常に日本語表示するための設定
(set-fontset-font
(frame-parameter nil 'font)
'japanese-jisx0208
'("Hiragino Mincho Pro" . "iso10646-1"))
(set-fontset-font
(frame-parameter nil 'font)
'mule-unicode-0100-24ff
'("Hiragino Mincho Pro" . "iso10646-1"))
;; 半角カタカナ、全角アルファベットの設定
(set-fontset-font nil
'( #xff00 . #xffef)
(font-spec :family "HannariMincho")
nil
'prepend)
;; 記号、全角ひらがな、全角カタカナの設定
(set-fontset-font nil
'( #x3000 . #x30ff)
(font-spec :family "HannariMincho"
nil
'prepend))
;; フォントの横幅の調整
(setq face-font-rescale-alist
'((".*Inconsolata.*" . 1.0)
(".*Hiragino Mincho Pro.*" . 1.0)
(".*HannariMincho.*" . 1.0)
("-cdac$" . 1.3)))

もし、この設定をそのまま流用するなら、はんなり明朝というフォントと、Inconsolataというフォントをインストールしてください。ヒラギノ明朝は、Macではデフォルトで入っています。

では少し、解説を。基本的にフォントの名前が書いてある部分を変えれば、自分の好きなフォントに変更できます。Emacs内で使用したいフォント名は、*scratch*バッファで(prin1 (font-family-list))と打ち込んでから、その括弧の末尾でC-jとするとリストアップされます。

*scratch*バッファへ変更するには、C-x bとして、*scratch*を選択します。init.elに戻るには、もう一度C-x bのコマンドを押して、init.elを選択しなおします。

もし、Macに入っているフォントのみの設定が必要なら、例えば以下のような設定はどうでしょうか。日本語表示のところはフォントをひとつにしたので、実際はあまり必要ないのですが、加工しやすいように、半角カタカナ、全角アルファベットうんぬん以下の設定は残しておきます。私が使っているものとの違いは、英語フォントをMenloにしたことと、日本語フォントをOsakaに変えたことです。

;; @font
;;デフォルトのフォントをMenloにする
;;Terminalで開く対策もする
(when window-system
;; 画面のフォントをMenloに
(set-face-attribute 'default nil
:family "Menlo"
:height 140)
(set-frame-font "Menlo")
;;以下は全て正常に日本語表示するための設定
;; フォントをOsakaに
(set-fontset-font
(frame-parameter nil 'font)
'japanese-jisx0208
'("Osaka" . "iso10646-1"))
(set-fontset-font
(frame-parameter nil 'font)
'mule-unicode-0100-24ff
'("Osaka" . "iso10646-1"))
;; 半角カタカナ、全角アルファベットの設定
(set-fontset-font nil
'( #xff00 . #xffef)
(font-spec :family "Osaka")
nil
'prepend)
;; 記号、全角ひらがな、全角カタカナの設定
(set-fontset-font nil
'( #x3000 . #x30ff)
(font-spec :family "Osaka"
nil
'prepend))
;; フォントの横幅の調整
(setq face-font-rescale-alist
'((".*Menlo.*" . 1.0)
(".*Osaka.*" . 1.0)
(".*Osaka.*" . 1.0)
("-cdac$" . 1.3)))

比較対象があれば、どこを変更すれば分かりやすいかもしれないと思ったので、このようなかたちにしました。

ここでも練習として、M-x eval-current-bufferと打ってみましょう。init.elなどのEmacs Lispの間違いを指摘してくれるので、これからinit.elを、つまりEmacsをカスタマイズする際になんども使うことになりますから。

まとめ

いかがでしたでしょうか。本当は、Emacsで日本語を打ち込むためのSKKというIMの紹介もしたほうがいいかもしれません。しかし、とにもかくにも日本語を表示させるというだけでも心理的な障壁がなくなるだろうと思ってこのようなかたちにしました。

実際私はEmacsを触りはじめたときに、正常に日本語フォントが正常に表示されないことなどからなかなか使えずにいました。SKKは入れなくても、とりあえずことえりなどのOS標準のIMで打ち込めるので、まずはこれだけあるだけで変わると思います。

私はEmacsを使いこんでいるというわけではないと思いますが、このエディタは信頼しています。プレーンテキストを開くのはEmacsですし、このブログの執筆もしています。少しずつ、自分なりの使い道を探すのもいいのではないでしょうか。

ではこれくらいで、失礼します。