前回は、spacemacsについて spacemacsが最強で最高で神エディタであると思い始めた件 という全く入門になってない、ポエムを書いたので、Spacemacsの入門記事を書いてみることにする。
この記事を書くとき、対象のユーザを設定するのに少し困った。というのも、対象ユーザ像として、誰向けに書こうか?と考えたとき、大きく分けると
- Emacsユーザ
- Vimユーザ
- その他のユーザ
に分かれてしまう。そして、Emacsユーザのみを考えても、同じEmacsでも関心が異なることがある。ひとまず、EmacsでもVimのユーザでも無い、「その他のユーザ」がSpacemacsを導入するというととを考えて、記事を書いてみる。
どうしても、暗黙知があり、説明に飛躍があるかもしれないが、できるだけカバーして書いていきたい。
さて、今後4回に分けて書こうと思う。
- その1 : Spacemacsの環境構築、基本的な操作、
- その2 : Spacemacsの設定のキホン事項、
- その3 : Spacemacsの設定の詳解
- その4 : Spacemacsのレイヤーの基礎
以上が入門としてである。また、今後、さまざまなレイヤーが提供されているので、いくつか詳解したい。
Spacemacs入門その1
環境構築
これは、spacemacsに書いてある通りに、やれば良い。
まずは、Emacsを導入する。spacemacsによると、各自好きな方法で、導入して良いと思うのだが、osxの場合、
$ brew tap d12frosted/emacs-plus
$ brew install emacs-plus --with-cocoa --with-gnutls --with-librsvg --with-imagemagick --with-spacemacs-icon
$ brew linkapps
が推奨されているようだ。
そして、spacemacsの.emacs.dをgitからcloneする。emacsでは, .emacs.dは、emacsにおいて、設定や拡張のファイルを入れておくところだ。Spacemacsは、emacsの拡張で、.emacs.dを導入して、emacsをSpacemascにカスタマイズするということである。
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
最後に,Emacsを起動しよう。ここで、spacemacsに必要なパッケージがダウンロードされる。また、ここで、EmacsかVimかの、キーバインドの設定を求められる。
emacs --insecure
キーバインドの設定でおすすめなのが、Vim(Evil)に設定しておくことを勧める。これは、もともとEmacsのユーザであっても、一度しばらく試してほしい。 個人的には、モード(ステート)に慣れればすごい良いものだと思えると思う。
Spacemacsを使ってみる(Spacemacsツアー)
慣れた人であれば、最初にまず、自分なりに設定をするとは思うのだが、まずは、簡単に基本的な事項を説明しながら、Spacemacsを体験してみよう。
![スクリーンショット 2016-06-04 21.23.32.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2F76f57b76-35a2-99e8-aa52-45bd76f08315.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=613111d06efc5fcd847b13b4aa0442c3)
ここでは、基本的な操作を解説していく。まず、ファイルを開く、そのあと"Hello World"などとテキストを挿入し、最後保存といった基本的な流れを説明して行く。
スペースキーが基本
さて、Spacemacsとう名前が付いていくぐらいであり、Spacemacsは、スペースキーからいろいろな操作を行なうことが可能である。まずは、スペースキー(SPC
)を押してみよう。(Emacsのキーバインディングを選択した人はSPC
をM-m
と置き変えて読んでみてくさい。)
![スクリーンショット 2016-06-05 3.15.26.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2F89570367-10af-3ab5-b4e2-a616bed251cb.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=95670b161f138abad09dcc4267389b6a)
下に、キーバインドの一覧が見れるはずだ。この一覧、はwhich-key.el
の機能である。赤字で書かれている+から始まる文字は、まだ次のキー操作が必要なものだ。
さて良くみると、f
が、ファイル操作、b
がバッファの操作、c
がコンパイル、w
がウィンドウの操作などと、ちゃんと覚えやすくなっていることが分かる。と同時に、やりたい操作が探しやすくなっている。ウィンドウ操作がしたければ、wあたりを探せばいいのかな?となってくる。
さて、SPCからのコマンド入力を誤ったなどと、コマンド入力を一端キャンセルしたい場合はとりあえずC-g
を押せば、キャンセルされる。とりあえず、C-g
を押して、SPC
の操作をキャンセルしておこう。
ファイル操作
バッファとウィンドウ
まず、基本的な知識として、Emacsはバッファとウィンドウがある。Emacsは、バッファとよばれる、ユーザの作業領域があり、そこでファイルの内容を読み込み、編集し、そして、その編集を元のファイルに保存する。つまり、一時的な編集作業領域がバッファである。
そして、そのバッファの内容を表示するのが、ウィンドウである。emacsは、ウィンドウを分割したりすることによって、複数のファイルを開いて、並行に作業することができる。
ディレクトリツリーを表示する
さて、ファイルを開くためにディレクトリツリーを表示してみよう。普通のエディタであれば、ファイルツリーを表示できて当たり前であるだろう。
SPC f t
を押してみよう。fはファイル操作、tは恐らくtreeからだろう。ここで、which-key.elのwindowが変化していることも見ておこう。さて、このキー操作でディレクトリツリーが表示される。(これは、neotreeという拡張の機能である。)
![スクリーンショット 2016-06-05 3.37.23.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2F13a6efe8-3f14-2db6-602d-96f7f5e3d299.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=fcd36cf9753e0e1086b95003e2482a02)
ディレクトリツリーの操作
さて、ディレクトリツリーを操作して、ファイルを追加したりしてみよう。
まずは、ディレクトリツーのウィンドウをアクティブにしておこう。おそらく、SPC f t
の直後であれば、既にアクティブな状態になっている筈だが、そうで無ければ、マウスでアクティブにするかSPC 0
などを押してアクティブにしよう。Spacemacsに置いて**複数のウィンドウの移動は、マウスかSPC <対応するwindowの数字>
で移動できる。windowの数字は、ページ下部にあるライン(モードライン)に表示されている。
![スクリーンショット 2016-06-05 14.36.12.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2Fb6d54090-ee95-f459-06cb-4bef998f5f30.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4cd9090e06cb5676171aedb2b07f70a8)
さて、neotreeのwindowがアクティブであるのを確認したら、ディレクトリツリーにノードを追加してよう。そのために、ああ、どうしよう! 追加するキー操作を忘れてしまった! ちょっと強引だが、こういった光景は良くあることだろう。
もちろん、この場合ググっても良いし、また、M-x
からコマンド名を入力してもいいのだが、こういった場合には、Spacemacsは、キー操作を調べる方法がある。SPC h k
である。(この場合h
はhelp
であり、kはkey
のことだろうと思う、なんとも覚えやすいと思う。)
さて、たくさんのキー操作がでてきた。
![スクリーンショット 2016-06-05 14.44.55.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2Fdd4fb474-2f16-8ccf-ca20-fb809504a721.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=22a819f57292074cf99400fbeee40f5c)
さて、ここで、目的のキー操作を探してみよう。neotree
の機能であるので、neotree
というワードと、ファイル作成なのでcreate
などを探しておこう。とすると、neotree-create-node
がそれっぽい。なるほど、tree
なので、node
を作るってことであるだろう。なので、c
を押下してみよう。
そうすると、node
を作成する画面が登場する。
![スクリーンショット 2016-06-05 14.53.31.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2Fe29eb42c-0d27-1f97-2f29-834095f3a01c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a89a23c7529ae0687c2d47274af92d0f)
とりあえず何か作成してみよう。とりあえず、helloworldというNodeを作成した。
![スクリーンショット 2016-06-05 14.56.47.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2F4da3e25c-ac5d-c378-0a91-7f374805a36c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=2e754cec8de1da113fd099da8371127f)
テキストを編集して、保存する
さて、helloworldというファイルが生成されたようなので、編集して保存してみよう。
おそらく、開いた状態のままだと、モードラインがこの様に表示されているだろう。
![スクリーンショット 2016-06-05 14.59.07.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2Fdd6892a0-fede-0f9f-5a85-8a793d5681aa.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3c1ac90756cd1f183cf2da68e2653d66)
このオレンジの色の状態は、Evilのノーマルステート(Vimにおけるノーマルモード)である。これは、カーソル移動などのための状態であり、このままではテキストを入力できない。なのでi
を押下してみよう。すると、インサートステート(Vimにおけるインサートモード)に変化し、モードラインの色やカーソルの形が変化する。
![スクリーンショット 2016-06-05 15.01.36.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2Fde6ac162-83a7-d7ea-65c4-105ecb133ddb.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b7bc747e99f53eee28060e58d36cc50a)
この状態でテキストが入力できるので、テキストを編集しよう。ここでは、hello world
とタイプした。
さて保存してみよう。保存するためには、ノーマルモードに切り変えなければならない。fd
とすばやく押下してみよう (同時押しぐらいの感覚で良い)。また、オレンジの状態に戻るはずだ。また普通のVimのように、ESC
やCtrl-[
とタイプするのでも良い。
保存してみよう。保存は、:w
(vim風の操作)良いし、SPC f s
(f
はfile
、sはsave
である)でも良い。
最後に編集したバッファを閉じてみよう。SPC b d
でバッファを閉じることができる。(キー操作の意味については考えてみよう)
まとめ。
今回は、簡単な導入と、Spacemacsのキー操作について、体験した。 読んで、Spacemacsでのemacsが如何に魅力的かが理解して頂けたら幸いである。
次回は、Spacemacsの設定の基本的なところを説明する。お楽しみに。
補足Vimの操作について。
細かい、Vimの基本的な操作に慣れて無い人は、どこかで、基本的なVim操作を覚えるか、または、SpacemacsからEvil-tutor
をやっておくと良いでだろう。SPC h T
と順番にタイプしてみよう。
そうすると、画面に、Evil(Vim)のチュートリアルが表示される。画面従ってやっておくといいだろう。
![スクリーンショット 2016-06-04 22.22.08.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F31381%2F0edb4392-b7fd-16b5-1097-ca5c49057717.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0485b81ac7411be7ce2d5b409ab6b0ee)
最初は全部はやる必要はないと思う。最低限
- ノーマルモード(ノーマルステート)、挿入モード(インサートステート)の切り変え
-
hjkl
のカーソル移動
に慣れることが大事だと思う。ちなみに、Vimにおいて、ノーマルモードへの移行は、ESC
か、C-[
だとは思うが、Spacemacsのデフォルト設定ではおそらく、先のコマンドに加え**fd
と素早く押す**ことによって、切り変えが可能である。(後に詳しく設定などを解説する。)
また、:q
などをVimにおける終了の操作をしてしまうと、そのファイルを閉じるだけでなく、Spacemacsが終了してしまうので注意してほしい。(このあたりは、設定を変更することが可能だ)