Emacs使いのミサワがWindowsで(NT)Emacs使うってそれどこ情報よー

環境はWindows7。情報はインターネットとかWEB+DB PRESS Vol.58|技術評論社とか。

地獄のミサワの「女に惚れさす名言集」とか拝借。なんとなくマイブームなので、そのとき思いついたことをつらつらっと。ぬるっと。

NTEmacsをダウンロード

NTEmacsEmacsWindows向けに使いやすくしたもの。一応純正のEmacsWindows向けは用意してある。

私は最初にこのEmacsをいろいろいじっていたけど、どうもEmacsは日本語入力が全く使い物にならない。SKKというのがあるけど変換があれだったり、パッチ当てればなんとか使えるようにはできるらしいけど、知識が無いし気力もないしで痔になりそうなのでやめた。

でも、「かぁーっ!Emacs使いすぎて小指折れたわー!小指に痛みをおぼえることがあるってEmacs - Wikipediaに書いてあるけどヨユーで骨折っすから!おれ、ヨユーでやっちゃいましたから!かぁーっ!」

というEmacs使いのミサワになりたい。


いや、なりたくない。そんなのには断じてなりたくない。なりたくないけどEmacsは使ってみたい。

それで結局Emacsやめて、NTEmacsをインストールして使ってみた。そしたらEmacsと特に大きな違いも無く、日本語も普通にインライン入力できるし、開発も停滞していないようなのでNTEmacsで問題ないようです。

あとNTEmacsはgnupackというのがあるけど、いろいろ便利なものをパッケージにしたもの?みたいなので、Emacsだけ使いたいのであればNTEmacsxxxx.exeのみで良いかなと思いますが、あってるかな。とりあえず単体で使っていきます。

以後NTEmacsEmacsと表記。

インストール

ダウンロードしたexeファイルを悠久の時を超え時空の狭間より呼び出されし神器マウースの封印を解き放ち彼の西方の地を神速の速度を超え再々押したまえ。

(ダブルクリックする)


はい。emacs-23.2というフォルダができた。とりあえずC:\emacs-23に置いた。

起動

確認のためにbinフォルダにあるrunemacs.exeを起動。ecmas.exeというのがあってそっちが本命っぽいけど、違うらしい。立ち上げたらメニューが英語だったり古めかしい画像があったりして全然よく分からなくて鬱になった初めてのEmacs

私が平常心で使いやすいようにいろいろ準備していきます。

ホームディレクトリを設定

ホームディレクトリを設定すると.emacs.dというフォルダが自動生成されるようなので、その仕組まれた通り従順なる下僕となって設定します。

Windowsは、このホームディレクトリというアットホームな場所が最初から設定されていないので、環境変数をいじって設定する。Windows7の場合、

  1. コンピューターアイコンとかコンピュータウィンドウ上で右クリック
  2. コンテキストメニュー中のプロパティを左クリック
  3. 開いたウィンドウの左から「システムの詳細設定左クリック
  4. 詳細設定タブで環境変数てボタンをレフトにクリック

環境変数いじれます。クリックのしすぎで骨折しないよう気をつける。足元とかもねッ。次にユーザ環境変数で新規作成をして、

  • 変数名
    • HOME
  • 変数値
    • C:\Users\ユーザ名

を入力してOKを押す。変数値とはホームディレクトリの場所。どこでもいいとは思いますが、私は他のユーザいないけど上記のところに。

Windows7ではCドライブ中にあるユーザーというフォルダのうち、自分のユーザ名のフォルダにあたる。Windows7以外のフォルダ構成は分かりませんが、vitaはほぼ同じだったはず。XPは少し違うかも。

ここまでできたらPCを再起動。起動したら、

  • C:\Users\ユーザ名

の場所で.emacs.dフォルダが生成されていることを確認。


・・・もしかしてできていない?その理由は環境変数の設定がおかしいから?それともオレが今シャブやってるからかな?


はい。

elispフォルダとinit.elを生成

.emacs.d以下にelispフォルダとinit.elファイルを作成。

このような構造。WEB+DB PRESS Vol.58にはconfフォルダも作ってありますが、どう扱えば良いのかわからないので辞めました。

ここからinit.elにいろいろ設定を書いていきます。emacsはこれをいじって機能を拡張していくようです。また、elispフォルダにはEmacsの機能を拡張するときに必要なelispファイル(xxx.elのファイル)を入れていくようで。

elisp(Ecmas Lisp)とはEmacsで利用されているプログラミング言語で、これでEmacsをあんなことやこんなことができるみたい。

この記事ではelispで書かれたコードを保存しているファイルを「elispファイル」とし、「elisp」はEmacs Lispのことを指します。ちょっとややこしい。


・・・ん?俺の方もややこしいだって?いくらオレがジョニーデップに激似だからって、そこまで区別付かないほどじゃないだろ?オーラで分かるでしょ?オーラで?


はい。

その前にload-pathの設定

load-pathというのはEmacsからelispファイルを読み込むときに、elispファイルはこのフォルダに詰め込んでいますよってことを表すパス。load-pathを設定しないと拡張されないんですね。

ではさっきelispフォルダを作ったのでこれにパスを通す。

そのための設定はinit.elに記述。以下のコードを先ほど作ったinit.elにコピペ。

;;; load-pathの追加関数
(defun add-to-load-path (&rest paths)
  (let (path)
    (dolist (path paths paths)
      (let ((default-directory (expand-file-name (concat user-emacs-directory path))))
        (add-to-list 'load-path default-directory)
        (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
            (normal-top-level-add-subdirs-to-load-path))))))

;; load-pathに追加するフォルダ
;; 2つ以上指定する場合の形 -> (add-to-load-path "elisp" "xxx" "xxx")
(add-to-load-path "elisp")

ファイルをEmacsで開いた場合、貼り付けはCtrl-yを押す。Ctrl押してからy押し。こういったキーバインドの操作は設定作業をしていると自然と慣れるでしょうか。慣れなきゃ困るなあ。

コピペしたらCtrl-x Ctrl-sで保存。Ctrl押しながらxを押して、xを離してからsを押す。

ウィンドウの一番下にミニバッファって欄があるのですが、そこにWrote c:〜って表示されれば保存できたということになるみたい。これでパスが通りました。今後、elispファイルはこのelispフォルダにぶっこんでいきます。

Emacsの一般的な設定

elispファイルをインストールする前にEmacsの基本的な部分を設定。私はほとんど本のコード参考にしました。

;;; スタートアップ非表示
(setq inhibit-startup-screen t)

;;; ツールバー非表示
(tool-bar-mode 0)

;;; ファイルのフルパスをタイトルバーに表示
(setq frame-title-format
      (format "%%f - Emacs@%s" (system-name)))

;;; Windows で英数に DejaVu Sans Mono、日本語にMeiryoを指定
(when (eq window-system 'w32)
  (set-face-attribute 'default nil
                      :family "DejaVu Sans Mono"
                      :height 100)
  (set-fontset-font nil 'japanese-jisx0208 (font-spec :family "Meiryo")))

;;; バックアップを残さない
(setq make-backup-files nil)

;;; 行番号表示
(global-linum-mode)

;;; 文字コード
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8-unix)
(set-default-coding-systems 'utf-8-unix)
(setq file-name-coding-system 'sjis)
(setq locale-coding-system 'utf-8)

;;; 括弧の範囲内を強調表示
(setq show-paren-delay 0)
(show-paren-mode t)
(setq show-paren-style 'expression)
;; 括弧の範囲色
(set-face-background 'show-paren-match-face "#800")

;;; 選択領域の色
(set-face-background 'region "#555")

;;; 最近使ったファイルをメニューに表示
(recentf-mode 1)
(setq recentf-max-menu-items 10)
(setq recentf-max-saved-items 10)

フォントについてはDejaVu Sans Monoを利用。もっぱら最近はInconsolataが評判良いですが、私の環境では文字の強調が強く目が疲れる。

DejaVu Sans Monoは線がスマートなのでもっさりせずシンプルで好みです。おすすめ。日本語はメイリオ使ってます。実はメイリオだけでも英文字含めて十分きれい。


まあ、もっとも、キミの瞳のきれいさにはどのフォントもかすんで見えるけどね・・・。あるいは俺が今シャブやっているからだろうね。


はい。

他の方々の設定も参考にどうぞ。

elispファイルをインストール

だのに俺はキミのハートからアンインストール・・・ってか。それは俺がシャブをやったからだろうね。完璧に。


はい。

Emacsの機能を拡張できるelispファイルをいくつかインストール。たぶんだいたい一般的な拡張かと。そこまで深く調べていないので。

auto-install.el

拡張のインストールを自動化してくれます。以下よりauto-install.elをダウンロード。

ダウンロードしたファイルを~/.emacs.d/elisp以下に置く。そしてinit.elにauto-installの設定を記入。

;;; auto-install.el
;; elispのインストール自動化
;; http://www.emacswiki.org/emacs/download/auto-install.el
(when (require 'auto-install nil t)
  (setq auto-install-directory "~/.emacs.d/elisp/")
  (auto-install-update-emacswiki-package-name t)
  (auto-install-compatibility-setup))

式の最後でCtrl-x Ctrl-eを押して設定を反映させます。Ctrl押しながらx押して、xを離してからeを押す。

ウィンドウの一番下にあるミニバッファにInstall-elisp compatibility installed.ってメッセージが出てればインストール完了。

Emacsを再起動しても反映されるけど面倒なのでCtrl-x Ctrl-eとやった方が便利。これはeval-last-sexpのキーバインドでその場で式を評価しているわけですが、詳しくは検索で調べてみてください。

redo+.el

EmacsにはもともとUndoは標準で付いているのですがRedoがない(あるといえばあるけどwin系の人はきっと使いづらい)のでelispで拡張すると便利。さっきインストールしたauto-installを使って、redo+.elをインストールしてみる。

  1. Emacsが開いている状態でAlt-xを押す
  2. ミニバッファに「M-x」と表示される
  3. そこに「install-elisp」と入力してEnter
  4. 今度は「URL ():」と表示されたと思う
  5. そこにhttp://www.emacswiki.org/emacs/download/redo+.elのURLを貼り付けてEnter
    • 貼り付けはCtrl-y
  6. redo+.elのコードがEmacsに読み込まれてダウンロードされたはず
  7. そうしたらCtrl-c Ctrl-cと入力。Ctrl押しつつcを2回押す
  8. ミニバッファにInstallation is completed.って表示されたら完了

あとはinit.elにredo+.elの設定を記入。

;;; redo+.el
;; kbd -> C-.
;; http://www.emacswiki.org/emacs/download/redo+.el
(when (require 'redo+ nil t)
  (define-key global-map (kbd "C-.") 'redo))

UndoはCtrl-/で使えるので、私は左隣のCtrl-.にRedoを設定しました。キーバインドを変えたかったら(kbd "好きなとこ")に。

auto-installはダウンロードからバイトコンパイルまでの手間がかからず楽ですね。他のファイルでも同じ要領でできるので覚えておくとインストールするときに便利。

バイトコンパイル

xxx.elをバイトコンパイルすればxxx.elcというファイルが出力されます。こうすればEmacsはxxx.elではなくxxx.elcを読み込みます。xxx.elcはEmacsにとっては読みやすい形式で内容が記述されているため、その読み込み速度や実行速度がだいたい速くなるとのこと。

なのでelファイルは基本的にバイトコンパイルしておくと良いようです。それでは、redo+.elファイルはauto-installによってバイトコンパイルまで済んでいるので、auto-install.elをバイトコンパイルしてみます。

  1. Emacs開いた状態でAlt-x
  2. M-x byte-compile-fileと入力しEnter
  3. Byte compile file: ~/.emacs.d/elisp/auto-install.elと入力しEnter
  4. ミニバッファにWrote c:〜と表示されたら完了

C:\Users\ユーザー名\.emacs.d\elisp以下で確認してみると、auto-install.elcというファイルが生成されていた。こういう作業をやってみると、auto-install.elのありがたさがよく分かりました。楽です。

menu-tree.el

Emacsのメニューを日本語化できます。慣れたらメニューは利用しなくなるでしょうがインストールします。

  1. http://www11.atwiki.jp/s-irie/pages/13.htmlからダウンロードして解凍
  2. menu-tree.elをC:\Users\ユーザ名\.emacs.d/elisp以下に置く
  3. Emacs開いた状態でAlt-x
  4. M-x byte-compile-fileと入力しEnter
  5. Byte compile file: ~/.emacs.d/elisp/menu-tree.elと入力しEnter
  6. ミニバッファにWrote c:〜と表示されたら完了

init.elに設定を記述。

;;; menu-tree.el
;; メニュー日本語化
;; http://www11.atwiki.jp/s-irie/pages/13.html
(require 'menu-tree nil t)

式の最後の位置でCtrl-x Ctrl-eで反映させると、メニューが日本語に。

elscreen.el

それぞれのバッファをタブで表示させることができます。バッファとは編集画面のデータそのものを指すようですが、ここではファイルという認識で良いかなと。だから、それぞれのファイルがタブブラウザのような操作で切り替えられるってイメージ。視覚的に分かりやすくて便利。


elscreen.elを利用するためにはまずAPELというライブラリが必要なので、それをインストールしてからelscreen.elをインストール。

URL先からAPELをダウンロードして解凍。現在は10.8が最新。

解凍したらそのうちのmakeit.batを開いて、105行目あたりの、

set PREFIX=
set EMACS=
set LISPDIR=
set DEFAULT_MAKE_ARG=

以下のように編集。

set PREFIX=C:\emacs-23.2
set EMACS=%PREFIX%\bin\emacs.exe
set LISPDIR=C:\Users\ユーザ名\.emacs.d\elisp
set DEFAULT_MAKE_ARG=

自分の環境に合わせて値は変更。あとemacs.exeはrunemacs.exeでないことに注意。ここミスった。次はAPEL-CFGを開いて、以下の2行を最後に付け足し。

(setq APEL_DIR "C:/Users/ユーザ名/.emacs.d/elisp/apel")
(setq EMU_DIR "C:/Users/ユーザ名/.emacs.d/elisp/emu")

それぞれ編集して保存できたら、コマンドプロンプトからAPELのフォルダにアクセス。まず「cd 」と入力し、それからAPELのフォルダをドラッグ&ドロップして、

C:\Users\ユーザ名>cd C:\Users\ユーザ名\Desktop\apel-10.8

これでEnter。今度は、

C:\Users\ユーザ名\Desktop\apel-10.8>makeit.bat elc

でEnter。xxx.elファイルをxxx.elcファイルにコンパイルしたことになる。そしてインストール。

C:\Users\ユーザ名\Desktop\apel-10.8>makeit.bat install

このとき2つのフォルダに分けられてライブラリがインストールされる。

  • apel
  • emu

それぞれC:\Users\ユーザ名\.emacs.d\elisp以下に生成されていることを確認。もし無い様であれば、C:\emacs-23.2\site-lispにあるかも。APEL-CFGで指定した2行を付け足していないと、そういったところにインストールされます。私はされてどこにあるのか分からず困りました。


次はelscreen.elインストール。

現在1.4.6が最新のようです。

  1. elscreen.elをC:\Users\ユーザ名\.emacs.d/elisp以下に置く
  2. Emacs開いた状態でAlt-x
  3. M-x byte-compile-fileと入力しEnter
  4. Byte compile file: ~/.emacs.d/elisp/elscreen.elと入力しEnter
  5. ミニバッファにWrote c:〜と表示されたら完了

あとはinit.elに設定を記述。

;;; elscreen.el
;; バッファをタブ化
;; http://www.morishima.net/~naoto/software/elscreen/
(setq elscreen-prefix-key "\C-z")
(require 'elscreen)
(if window-system
    (define-key elscreen-map "\C-z" 'iconify-or-deiconify-frame)
  (define-key elscreen-map "\C-z" 'suspend-emacs))

Ctrl-z Ctrl-cで新規ウィンドウを生成できることと、Ctrl-z Ctrl-kでウィンドウとバッファを閉じるぐらい覚えました。

ツールバーからも操作できるのでよくわからなければそこから指定すればいいし、その他の設定や操作は調べたりソース読んだりします。

Auto Complete Mode

入力補完機能。プログラミング時など便利。

インストール先は~/.emacs.d/elispを指定。init.elの設定はあちらでも書いてありますが、

;;; Auto Complete Mode
;; 自動補完機能
;; http://cx4a.org/software/auto-complete/index.ja.html
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/elisp/ac-dict")
(ac-config-default)

そのまま。設定や使い方などは参考URL参照。

ここまできたら

箇条。今までの要領で大丈夫でした。


今のところこれだけ。これ以上はまた後で。適切に使いこなせるまでにはかなり時間がかかりそうですが、何事もやってみなければいけないと思うのでがんばってみます。

もし何かおすすめの設定や拡張がありましたら教えてください。コメントし難い記事かもしれませんが。普通に真面目にやってます。

表記について

Ctrl-x Ctrl-sのキーバインドはバッファの保存に当たりますが、通常はC-x C-sなどと略称が一般的。この記事では冒頭での説明が面倒なのでCtrlと表記していましたが、一般的な表記は、

  • CtrlキーはC
  • AltキーはM
  • ShiftキーはS

とそれぞれ表記されています。当たり前のことすぎて書かれている記事が少ないですが念のため。AltがMなのはMetaキーのMということだそうで納得。ついでにCはControlで、SはShiftとそのまま。

基本的にこれらのキーを基本に操作するのがEmacsのようで、たとえば、

など。こういった基本となるC・M・Sキーは修飾キーと総称されています。Sはまだ使ったことないけど。ああ、でもSKKで使ったことある。これが苦痛でEmacsやめたんだ。慣れるまで待てませんでした。

操作のキャンセル方法

現在の操作をキャンセルする方法は、

  • C-g(Ctrl-g)
    • 現在行っている操作をキャンセル
  • ESC-ESC-ESC
    • 現在の状態をできる限りリセット

の2つがありますが、私はまずC-gをタイプして、どうにもならなかったらESC-ESC-ESCをタイプしています。

雑話

使っていてブルーになったら

Emacsvimはだいぶ前にも挑戦したことがあるのですがブルーになったのでやめました。今回はなぜブルーにならなかったかというと、

いつか慣れます。慣れなかったら泣けば良いんです。ブルーになったら泣いて慣れるまで続けます。私は器用でないのでネガティブになること前提で挑むスタンスです。そこら辺を心得た上でのネガティブにポジティブなんです。

vimは?

個人的には基本となるキー(C, M, S)があって覚えやすいかなってことでEmacsに。vimは、Windowsではhttp://www.kaoriya.net/が利用できます。

どっちにしようかなってときは、触ってみて気分が良い方を選ぶのが良いかと思います。

小指折れる?

折れない。Emacsで鍛えられれば小指デコピンで地面がえぐれるほどの小指を持つ者になれるらしい。クククク。我が小指のデコピンに勝るデコピン無し!!(ウソだよ)

なんでジョニーデップに激似なの?

あれ?オレがジョニーデップに激似っていつばれた?おいおい、広めないでくれよー?それが広まるとオファーくるだろ?ウッドからオファーくるだろ?


はい。いろいろ設定できてよかった。コメントとかしっかり書かずにやっていたので分からなくなって、一度爆発しました。