WindowsユーザーでEmacsを導入したい初心者ユーザーのための情報まとめ

emacs-windows-catch


更新履歴
[2016/09/09]記事を少し修正しました。(記述内容はそんなに変えていません)
[2016/02/01]本記事公開

WindowsでEmacsを使うのはややこしい?

こんにちは。kei(@boot_kt)です。

WindowsユーザーでEmacsを導入したいけど、よく分からない人(*1)のために手順をまとめておきます。
難しくないですしググれば分かるような事ばかりですが、ちょっと手こずったところもあるので手順をメモ。

*1:
って言うか、Emacsを使おうというユーザーが初心者とは思えないンすけど。
この記事は余計なお世話ですよねぇ~

WindowsでのEmacsはややこしいらしいです。
るびきちさん曰く「WindowsでEmacsをまともに動かすのは茨の道」らしいです。

僕はEmacsの事はよく分からないので、以下は間違いがたくさんあると思いますが、ややこしいことは抜きにして 手っ取り早く導入 することを目的に書いています。

※間違いがあればご指摘お願い致します。

前提1:WindowsでのEmacsの種類

WindowsでのEmacsは二種類あるらしい。

一つは、NTEmacs、もうひとつはgnupack

よく分からないので、gnupackの方は無視 します。
NTEmacsの方が導入が 簡単そう なので。

本記事はNTEmacsを対象とします。
Verは24.5を対象。

前提2:IMEパッチの当たったEmacs!?

日本語でEmacsを使う場合、IMEパッチを当てたものを使います。

Emacs自体がIME機能を持っているんだけど、普通日本でパソコンを使うとMS-IMEとかATOKとかGoogle日本語入力を使いますよね。
機能が重複してしまうため、IMEとEmacsがうまく連動しないんですよね。

なので、IMEパッチっていうのを当てたEmacsを使います。

IMEパッチを当てていない素のEmacsでも充分使えますけど、IMEパッチが当たっている方が使いやすいっていうだけです。

1.NTEmacsのダウンロード

画面右上の「Download ZIP」ボタンをクリックします。

「NTEmacs64-master.zip」がダウンロードされますので、これを解凍します。解凍した中に「emacs-24.5-IME-patched.zip」がありますので、これだけを使います。

これを解凍したら、「runemacs.exe」を使えばOK!!

 

これであなたもEmacser!!!

 

ダウンロード画面に、
emacs-24.5-IME-patched-generic-cpu.zip
と、
emacs-24.5-IME-patched.zip
と、

似たような名前が2つあるけど、どう違うの?

 

・・・・さぁ?僕では分かりません(笑)

 

画面下の方に「バイナリ説明」という説明書きがあるので、そこをご覧ください。

emacs-24.5-IME-patched.zip」を使っておけばいいんだと思いますよ、多分。

設定ファイル

Emacsは設定ファイルに色々と設定を書いて使います。

例えば、秀丸エディタであれば

その他(O)動作環境(F)

で各種設定ができますが、

Emacsの場合、
.emacs.d」というフォルダの中にある「init.el」というテキストファイルに記述します。

※init.el以外にも設定は書けるようですが、詳しいことは僕は知りません。

で、init.elはWindwsのどこにあるかと言うと・・・・↓ココ。

C:\Users\(ユーザー名)\AppData\Roaming\.emacs.d\init.el
ココ↑に書けばいいです。

※環境変数とか設定すると変更できるのかな?
~オマケ~
ちなみにですね、このinit.elって結構大切です。

設定の記述が増えれば増えるほど無くすとエラい事になります。

なのでバックアップが必要です。

かと言って手動でバックアップ取るのは面倒。バックアップはOneDriveとかGoogleドライブとかDropBoxとかを使えばいいでしょう。

init.elの本体をOneDriveとかGoogleドライブとかDropBoxとかのディレクトリに置き、「C:\Users\(ユーザー名)\AppData\Roaming\.emacs.d\」にはシンボリックリンクを置けばいいです。

Windowsユーザーはシンボリックリンクが分からないかも知れませんが、ショートカットみたいなもんだと思ってください。細かく言えば違いますが、ひとまずはショートカットと同じと考えてください。(細かい違いは今は考えない)

で、コマンドプロンプトを立ち上げて以下のコマンドを打ってください。

事前に「C:\Users\(ユーザー名)\AppData\Roaming\.emacs.d」のinit.elは移動するなり消すなりしてください。
もしかしたら、コマンドプロンプトは管理者として起動する必要があるかも知れません。
cd C:\Users\(ユーザー名)\AppData\Roaming\.emacs.d
mklink init.el (OneDriveとかGoogleドライブとかDropBoxのパス)\init.el

.emacs.dフォルダにinit.elというファイルができます。

右クリックプロパティ(R)全般タブファイルの種類

「.symlink (el)」

になっているはず。

これでOKです。
OneDriveとかGoogleドライブとかDropBoxにバックアップ取れるし、Emacsからも参照できます。

シンボリックリンクって、UNIX/Linux系では当たり前のように使うんですけど、実はWindowsでも使えるんですよ。あまり知られてないですけど。
Windowsユーザーもシンボリックリンクを使うようにすると結構便利ですよ。

 

で、僕がinit.elに書いたのは以下の通り。
これで完結ではないですが、とりあえず現時点ものを書きます。

;;===========================================
;;  絶対必要な基本設定
;;===========================================
;;----
;; スタートアップページを表示しない
;;----
(setq inhibit-startup-message t)

;;----
;; 行番号表示
;;----
(global-linum-mode t)
(setq linum-format "%5d ")

;;----
;; カラム番号
;;----
(column-number-mode t)

;;----
;; ビープ音を消す
;;----
(setq ring-bell-function 'ignore)

;;----
;; カーソル行に下線を表示
;;----
(setq hl-line-face 'underline)
(global-hl-line-mode)

;;----
;; 対応する括弧を強調表示
;;----
(show-paren-mode t)

;;----
;; 時計表示
;;----
;; 不採用    ;; 時間を表示
;; 不採用    (display-time)
(setq display-time-day-and-date t)  ;; 曜日・月・日
(setq display-time-24hr-format t)   ;; 24時表示
(display-time-mode t)

;;----
;; TABの表示幅
;;----
(setq-default tab-width 4)

;;----
;; ファイルサイズ表示
;;----
(size-indication-mode t)

;;----
;; ツールバーを非表示
;; M-x tool-bar-mode で表示非表示を切り替えられる
;;----
(tool-bar-mode -1)

;;----
;; タイトルバーにフルパス表示
;;----
(setq frame-title-format "%f")

;;----
;; カラーテーマ
;;----
(load-theme 'deeper-blue t)

;;----
;; 全角空白とタブを可視化
;; 参考:http://d.hatena.ne.jp/t_ume_tky/20120906/1346943019
;;----
;; タブや全角空白などを強調表示
(global-whitespace-mode 1)
;; whitespace-mode の 色設定
;;http://ergoemacs.org/emacs/whitespace-mode.html
(require 'whitespace)
(setq whitespace-style 
      '(face tabs tab-mark spaces space-mark newline newline-mark))
(setq whitespace-display-mappings
      '(
        (tab-mark   ?\t     [?\xBB ?\t])  ; タブ
        (space-mark ?\u3000 [?□])        ; 全角スペース
;        (space-mark ?\u0020 [?\xB7])      ; 半角スペース
        (newline-mark ?\n   [?$ ?\n])     ; 改行記号
        ) )
(setq whitespace-space-regexp "\\([\x0020\x3000]+\\)" )
;正規表現に関する文書。 Emacs Lispには、正規表現リテラルがないことへの言及
;http://www.mew.org/~kazu/doc/elisp/regexp.html
;
;なぜか、全体をグループ化 \(\) しておかないと、うまくマッチしなかった罠
;
(set-face-foreground 'whitespace-space "DimGray")
(set-face-background 'whitespace-space 'nil)
;(set-face-bold-p 'whitespace-space t)

(set-face-foreground 'whitespace-tab "DimGray")
(set-face-background 'whitespace-tab "nil")

(set-face-foreground 'whitespace-newline  "DimGray")
(set-face-background 'whitespace-newline 'nil)


;;===========================================
;; キーボード操作系
;;===========================================
;;----
;; キーの入れ替えの例
;;----
;; global-set-keyはdefine-keyのラッパーなので、どっちを使ってもOK
;; (define-key global-map (kbd "C-t") 'other-window)
;; (global-set-key (kbd "") 'other-window)


;;----
;; ウィンドウ切り替え
;; SはShiftキーのこと
;; 参考:http://qiita.com/saku/items/6ef40a0bbaadb2cffbce
;;----
(defun other-window-or-split (val)
  (interactive)
  (when (one-window-p)
    (split-window-horizontally) ;split horizontally 縦分割にしたい場合はこちら
;;    (split-window-vertically) ;split vertically   横分割にしたい場合はこちら
  )
  (other-window val))
(global-set-key (kbd "") (lambda () (interactive) (other-window-or-split 1)))
(global-set-key (kbd "") (lambda () (interactive) (other-window-or-split -1)))

;;----
;; 折り返しトグルコマンド
;;----
(global-set-key (kbd "C-c l") 'toggle-truncate-lines)

;;----
;; バックスペースをC-hにする
;; デフォルトではは内部的にとして扱われている
;; C-hをのキーシーケンスに上書きする
;;----
(keyboard-translate ?\C-h ?\C-?)

Emacsの使い方

Emacsの使い方については説明はしませんが、僕が書いた記事で良ければ以下を参考にどうぞ。

参考URL

下記の記事を参照させて頂きました。
有用な情報を提供してくださってありがとうございます。

参考書籍

※この本にもinit.elの設定内容が書かれてあるので、すごく参考になりました。
※Emacsを初めて使う人には超絶オススメです。


 

 

2 件のコメント

    • コメントありがとうございます。

      返信が遅くなってしまいました。
      すみません。

      ご教授ありがとうございます。
      なるほど、そういう設定をしておくと良いんですね。

      今度試してみます。

      ありがとうございました。

  • 国広卓也 へ返信する コメントをキャンセル

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    ABOUTこの記事をかいた人

    Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。