クイック エンジニアリングブログ

株式会社クイック Web事業企画開発本部のエンジニアリングチームが運営する技術ブログです。

EmacsからSpacemacsに乗り換えました

こんにちは、五所です。

最近、EmacsからSpacemacsに乗り換えました。

f:id:aimstogeek:20170209100723p:plain

結論としては、非常に快適です。

EmacsVimに対する想い

Emacsは、拡張性が非常に高いです。 エディタの枠を超えて、ファイラー、Gitクライアント、ターミナルエミュレーター、Webブラウザ、画像ビューア、などで使えます。 またタグジャンプや auto-complete.el を使えばIDEとしての機能も満足できます。

Vimは、圧倒的なテキスト編集の速さが売りです。UIが優れています。

EmacsではCtrlキーを常に押している必要がありますが、Vimではモードの切り替えの概念があるため、カーソル移動時と入力時の指の使い方が全く異なります。 これが心地よく、キーコンボを入力するのは、まるで格ゲーをしているような気分にさせてくれます。

Spacemacs

spacemacs.org

両者を統合したのがSpacemacs(正確に言えばEvilパッケージ)で、 Emacsの高い拡張性の上で、VimのUIを実現しました。 またSpaceキーを起点としてEmacsのコマンドを発行することで、より速く効率的なキーバインドを実現しています。

公式サイトでは

The best editor is neither Emacs nor Vim, it's Emacs and Vim!

と言っています。

日本語の紹介記事もちらほらあります。

spacemacsについて ~~spacemacsが最強で最高で神エディタであると思い始めた件~~

Vimも秘伝のタレも飲み込むEmacsの超強力ディストリビューションSpacemacsまとめ

少しだけ紹介すると、

  • Space f f でファイルを開く
  • Space g s で Git status
  • Space w w で ウィンドウ切り替え
  • Space w - で ウィンドウ水平分割

など、かなり直感的です。

日本語入力について

※ ここからはLinuxでの話です。Macの方は別の解決策があるんじゃないかなと思います。Windowsは(ry

Vimは、日本語入力との相性の悪さが随所で指摘されています。

特にターミナルで使っている時は、モード切り替えによって、インサートモードからノーマルモードに移行すると、日本語入力のままになるので不便です。

これを防ぐために、

.vimrc

autocmd InsertLeave * call system('fcitx-remote -c')

という設定もありますが、特定のIMEに依存した挙動をあまり入れたくはありません。

Emacsでは、 mozc パッケージを使うことによりEmacs上で日本語を入力できるようになります。

Emacsが日本語入力を制御するので、非常に柔軟な挙動が実現できています。

またMozcはGoogle日本語入力オープンソース版なので、使いやすいでしょう。

SpacemacsでEvilモードを使ってVimキーバインドを再現している時は、ターミナルのVimの日本語入力より数段快適です。

下記のような挙動です。

  • ノーマルモードに切り替えると、自動的に日本語入力OFF
  • インサートモードに切り替えると、自動的に日本語入力ON

で、これはSpacemacsとはあまり関係が無いのですが、EmacsでMozcを動かす設定です。

~/.spacemacs

(defun dotspacemacs/layers ()
  ;; (中略)
  (setq-default
   dotspacemacs-additional-packages '(
                                      mozc
                                      )
  ;; (中略)
   dotspacemacs-install-packages 'used-only))


(defun dotspacemacs/user-config ()
  ;; (中略)

  ;; Mozc settings
  (set-language-environment "Japanese")
  (setq default-input-method "japanese-mozc")
  (setq mozc-candidate-style 'echo-area)

  (defun mozc-start()
    (interactive)
    (set-cursor-color "blue")
    (message "Mozc start")
    (mozc-mode 1))

  (defun mozc-end()
    (interactive)
    (set-cursor-color "gray")
    (message "Mozc end")
    (mozc-mode -1))

  (bind-keys*
   ("<henkan>" . mozc-start)

  (bind-keys :map mozc-mode-map
             ("q" . mozc-end)
             ("C-g" . mozc-end)
             ("C-x h" . mark-whole-buffer)
             ("C-x C-s" . save-buffer))

  )

Mozcが有効になっている時は、カーソルの色を変えています。もっと分かりやすい色にしないと。

また、自分はUSキーボードを使っているので、下記の設定で右AltをHenkanキーにリマップしています。

~/.xmodmap

! Clear alt mapping
clear mod1

! Alt_R => Henkan
! Set Henkan to Fcitx & Emacs IME activation key
keycode 108 = Henkan Henkan NoSymbol NoSymbol

Mozc自体のインストールは下記です。Archはパッケージ名が fcitx-mozc と競合するので注意。

# Arch
sudo pacman -S emacs-mozc

# Ubuntu / Debian
sudo apt-get install emacs-mozc

これで、日本語入力ができるようになりました。

ススメ

Emacs派も、Vim派も、そうでない方もSpacemacsをぜひ試してみて下さい。

インストールは、GitHubのREADMEに従えば、迷うことは無いと思います。

github.com