時間がだいぶ開いたが、書いていく。
前回、その1を書いた。その1では、簡単な導入と、Spacemacsの簡単なツアーをご紹介した。
今回は、基本的な設定や拡張にまつわることに付いて書く。
他のエディタやIDEを使ったりvimなど特に何も設定しないことが多いだろう。しかし、emacsユーザの殆どの人達は、デフォルトの設定や拡張もなく、そのまま使うことは無い。やはり、より快適に使うために、日々設定を調整し、拡張していき、どんどん自分なりのエディタを作るものだ。
spacemacsは、emacsと同様に設定したり拡張したりすることができる。しかし、emacsほど、沢山の設定や拡張を入れるなんてことはしなくて良いようにできている。今回はそのやり方を見ていこう。
また、最初に設定すべき重要な項目のみに絞る。重要なのは、すべてを一度に設定するよりも、使っていくうちに少しずつ設定を変えていくことだと思う.設定自体は emacs lispを記述することになるが、今回は深くは説明しない。設定の内容がある程度理解できるようにする。emacs lispについてもだんだん覚えていけばいい。
紹介するキーバインド
今回紹介する、キーバインドを予め紹介する。
キーバインド | コマンド | 機能 |
---|---|---|
SPC f e d |
find-dotfile |
.spacemacsファイルを開く |
SPC f e R |
dotspacemacs/sync-configuration-layers |
設定ファイルの反映 |
org-layersのキーバインド
今回は、org-layer
を設定してみる。後日 、org-layers
は詳しく紹介するが、今回は簡単に。
キーバインド | コマンド | 機能 |
---|---|---|
SPC m L |
org-shiftleft |
todoをdoneに変更 |
設定を書く
spacemacsは.spacemacs
か、.spacemacs.d/init.el
などに設定を書いいく。おそらく、spacemacsをインストールしたばかりであれば、.spacemacs
が生成されているはずである。以降の記事は.spacemacs
であると仮定する。(私は,.spacemacs.d/init.el
だが。)
さて、.spacemacs
を編集していく。直接 SPC f f
で.spacemacs
を開いても良いが、SPC f e d
でも行ける。(おそらく、fileとemacsとdotfileの頭文字であろう)。
さて、設定を書いていくが、おそらくspacemacsにおいて、最も重要な設定といえば、レイヤー設定 であろう。
レイヤーとは?
後の記事で、またレイヤーについて詳しい説明をするが、簡単にレイヤーについて説明しておこう。レイヤーとは、簡単に言えば、パッケージをまとめたもので、たとえば、rubyのレイヤーに関しては、rubyのパッケージがまとめて導入できるものである。
レイヤーを設定する
さて、レイヤーを設定してみよう。 spacemacsには様々なレイヤーが存在するが、まずは、org-layer
を設定してみよう。org-layer
とは、org-mode
という、emacs上で、todoリストやメモ、スケジュール管理などが行なえるモードである。 便利であるし、emacsに慣れるためにも、是非とも org-layer
は使ってみると良いと思う。
.spacemacs
内部にこのような記述があるはずだ。
dotspacemacs-configuration-layers
'(
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press <SPC f e R> (Vim style) or
;; <M-m f e R> (Emacs style) to install them.
;; ----------------------------------------------------------------
;; auto-completion
;; osx
;; org
;; better-defaults
;; git
;; markdown
;; org
;; spell-checking
;; syntax-checking
;; version-control
)
このdotspacemacs-configuration-layers
の直後にある'( )
の内部に有効にするレイヤーを設定する。 org-layerを設定してみよう。 org-layerに関しては、通常では;;org
でコメントアウトされている、コメントを外せば良い。(emacs lispでは、コメントは;;
で書く)
もし、;;org
が見当らなければ、そのまま'()
内部のどこかに記述しておこう。
dotspacemacs-configuration-layers
'(
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press <SPC f e R> (Vim style) or
;; <M-m f e R> (Emacs style) to install them.
;; ----------------------------------------------------------------
;; auto-completion
;; osx
;; org
;; better-defaults
;; git
;; markdown
org ;;ここのコメントを外す
;; spell-checking
;; syntax-checking
;; version-control
)
設定を反映して、org-layerを試す。
さて、ここまで書いた設定を反映してみよう。 設定ファイルなので、まぁ、spacemacsの再起動でも良いが、SPC f e R
で反映される。org-layer
の詳しい使い方は別個また書く予定ではあるが簡単な紹介をしておく。
さて、簡単にtodo listを作ってみよう。まずはSPC f f
などで、TODO.org
というファイルを作成して、以下のように書かく
* DONE spacemacsの記事を書く
* TODO spacemacsの記事2を書く
* TODO spacemacsの記事3を書く
* TODO spaceemacerのためのemacs lisp入門記事を書く
* TODO spacemacsのlayer各種の記事を書
とするとこのように表示される筈である。
さて、TODOをDONEにしてみよう。とりあえず、todoをdoneにしたいところにカーソルを移動して、SPC m L
と入力しよう。すると,
となり、DONEとなった。SPC m
から始まるのはメジャーモードのキーバインドがまとめられており、メジャーモードに関するキーバインドはとりあえず、SPC m
とタイプしてみよう。
まとめ
以上で設定のキホンを述べた。基本的に、.spacemacs
を編集して行く。次回の記事で、設定詳解を書いていく。
また、後日記事にて、レイヤーの基本的なことや、`org-layer'などの各種レイヤーについて解説していく。
補足 emacs lispについて。
.spacemacs
などの設定ファイルは、Emacs Lispで書かれる。Emacs Lispに関しては段々覚えていけば良いと言ったが、それでもemacs lispの凄く基本的なことは知っておいても良いだろう。なので、Emacs Lispに関して初歩的な内容を補足しておく。
まず、SPC b b
で、*scratch*
というバッファがあるのでそれを選択しよう。*scratch*
バッファというのは、emacs lispを試し書きする場所である。ここで、emacs-major-modeになってないのであれば、SPC :
でemacs-lisp-mode
にしよう。emacs-major-mode
かどうかは以下で確認できる。
さて、なにかemacs lispを書いてみよう。以下のように書いてみよう。
(+ 3 4)
そうして、SPC m e e
と押してみよう。ミニバッファに7
と表示されるはずである。おそらく、お分かり頂けてるとは思うが、7
というのは(+ 3 4)
の実行結果である。emacs lispはプログラムを実行することを**評価(eval)**と呼ぶと覚えておこう。
さて、上記のプログラムの様にEmacs Lispというか、大抵のLispは、
(関数 値 値 値)
という形を取ることを覚えておこう。
また、
'(+ 3 4)
と書いて、また、SPC m e e
と押してみよう。今度はそのまま(+ 3 4)
とミニバッファに表示されている筈である。'
が付くと、emacs lispは評価しなくなる。この記号はクォートと呼ぶ。評価されない'(+ 3 4)
はこれはリストのデータとして扱われる。
設定にて、'(a b c ....)
という形はたくさん出てきているが、これはLispのリストを表わしているんだということを覚えておこう。