Diary over Finite Fields

515ひかるの日記と雑文

ブログ記事を書くのにSpacemacsを使い始めた件

久しぶりのエディタ記事。

Abstract

Emacs というエディタがあって、という話はどこかで誰かが何度もしていると思うので今更しない。今回紹介するのは Emacs をベースにした Spacemacs である。

内容としては、試しに Spacemacs で Org mode を使ってブログ記事を書いてみたらかなり気に入ったという話になる。技術的な話は一切しないので、もし Spacemacs についてわからないことがあって調べてこの記事にたどり着いたのであれば、あなたの求める情報はここにはないのでブラウザの戻るを押していただきたい。わかっていないことを発信するということは無責任なことになりかねないので。

Spacemacs ってなんぞ

すごく簡単に言うと、「予めツールを大量に積んだ Emacs」である。 僕は WindowsEmacs を使おうと思ったことが殆ど無いので、以下は特に断りがない限り Unix 系の OS を想定して書く。

インストールは簡単で、 Emacs をインストールしたあとに、 GitHub から Spacemacs のリポジトリ~/.emacs.d に配置して Emacs を起動すればいい。Ubuntu などでは次の 2 つのコマンドを叩けば終わるだろう。

$ sudo apt-get install emacs
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.dhttps://github.com/syl20bnr/spacemacs ~/.emacs.d

これだけ。

なにがすごいん?

ベースは Emacs なので Emacs の操作感も生きてはいるのだが、すごいのは EmacsVim を “足し算” していることだ。これは僕が言い出したわけではなく、本家の GitHub に、

A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it’s Emacs and Vim!

としっかり書いてある。EmacsVim の特長を足し算したということだ。つまり、

  • Emacs の拡張性
  • Vim のテキスト編集能力

を足し算し、最高のエディタを作ったということになる。

ちなみに、 Vim キーバインドなんて使ったことないよ! という人も Emacs の操作感のままで Spacemacs を使うことはできる。しかし、個人的にはおすすめできない。上に書いたようにこのエディタは “いいとこ取り” の精神で作られているのだ。このエディタは Vim 派の人間が Emacs に乗り換えるためのものではなく、Emacs 派の人間がより便利に Emacs を使うためのもののような気がしている。

ついでに、このエディタは「Vim キーバインドで書きたいけれど重い Vim は嫌いだからあまり拡張したくない」人*1向けのエディタでもあると思うので、軽い Vim を保ったまま拡張することに疲れた人はぜひ一度使ってみてほしい。

なんで使い始めたん?

実はしばらく前から Spacemacs の存在は認知しており、何度か使おうと思っていたのだがそのたびになんか使う理由を感じられなくて NeoVim に戻ったり、あるいは自分で init.el を書いたり、はたまた仕事用に VSCode の環境を作ったりしていた。ここのところ、そのどの環境にも不満があってなんだかなと思っていた。そんな折に、Spacemacs を使い始めて、僕が感じていた不満を解消してくれそうな気がしたのでこの記事を書き始めたという感じだ。

見た目

僕が「これは……!」と思ったのは、この Spacemacs と Org mode の組み合わせにある。

Atom や VSCode、Sublime でもなんでもいいが Markdownシンタックスがサポートされているのが普通になってきたが、結構デフォルトでは簡素なことが多い。

EmacsMarkdown を書いてもいいのだが、 Org mode を使えば Org mode で書いた文章を Markdown に変換することは容易いので Org mode を使ってみた。

f:id:hikaru515:20170305225506p:plain

この見た目である。わかりやすい見出しやハイライトに、かなり良さを感じてしまった。

f:id:hikaru515:20170305225525p:plain

比較に同じ記事を Markdown 化したものを Atom でハイライトさせてみた。右のプレビューは確かに見やすいが、左のもともとのコードのみ見ていると案外簡素ではないだろうか。

少なくとも僕はプレビューを見ている時間よりももともとの文章を見ている時間のほうが長いので、もともとのシンタックスハイライトが見やすいほうが好きだ。

念の為書いておくけれど、たぶん Atom でもなんでもシンタックスハイライトを強化することは可能なんだとは思う。しかし、僕はこの見た目が自分の趣味にマッチしたので使うことを決心したのであって、Markdownシンタックスハイライトを強化したいわけではない。

Vim キーバインドを活かす環境

Vim キーバインドは結構好きだ。しかし、VSCode や Atom などで Vim like に操作をするプラグインを入れてみてもしっくりこない。それはおそらく、それらのエディタには最後にはどうしてもマウス操作が前提になっており、キーボード操作で完結させることがひとつの利点である Vim キーバインドを活かしきれないのだと思う。ある程度キーバインドを覚えればキーボード操作で完結させられるのかもしれないが、マウスなしで IDE を使うと言っているような違和感がある。

一方で Spacemacs はもともと Emacs であるので、マウスが介入しないのも自然だ。ついでに、初期設定で選ぶだけでよしなに Evil の設定をしてくれるのもありがたい(手動でやってたとき結構ハマったんだよな)。

シンプルな操作

「Space」mace という名の通り、すべての操作が(Vim keybind を選んだ場合は) SPC キーを押すことにより始まる。そして、なんと自分ができる操作は下に表示されるのである。

f:id:hikaru515:20170305225546p:plain

Emacs の操作全然覚えられない、そう悩んでいた時代がありました。でも Spacemacs であれば、ある程度は類推できます。まぁ全部直感的に分かるというわけでもないので、使いながら覚えていくしかないわけですが。

まとめ

  • 拡張性の高い Vim
  • Vim like に操作できる Emacs
  • モダンな見た目
  • 意外な(?)相性の良さ

これらの要素から、ひとまず「ブログを書くエディタ」に認定した。今の僕は休日はプログラムを書いている時間とブログを書いている時間がどっこいどっこいなので、その環境が良くなるというのは僕にとっては非常にウェイトが高い。

最近はむしろ。「プログラムはどんな環境であっても書けたほうがいい」という発想に変わっていて、せいぜいインデントと全角スペースを表示する程度の設定しかしていない Vim を使って Python の短いコードを書いたりすることがある。だからプログラミングの環境よりも文章を書く環境の方にこだわりを注いでいきたい。

僕は見た目で惚れただけの段階なので、このエディタや Org mode と付き合ってもう少し理解したい。理解したら、いろいろ理解したことを書いていこうかと思う。

*1:つまり筆者のことである。