Spacemacsの設定の話
現在のSpacemacsの設定について。GitHub にあるものそのままですが。
.spacemacsについて
Spacemacsをインストールしてから、初回の起動時に対話式で設定を聞かれたあとに、 .spacemacs
というファイルがホームディレクトリに作られます。基本的に、Spacemacsでは、この .spacemacs
に設定を記述していく形になります。
<Space> f e d
というキーバインドでさっとこのファイルが開きます。ちょっと設定を書いてから、Spacemacsに反映させるには、 <Space> f e R
で反映されます。便利ですね。自分は現状このファイルを触ってるだけで事足りています。
dotspacemacs-configuration-layers
ある意味この設定が一番、Spacemacsの特徴ということになるかもしれません。Spacemacsは独自に Layer というシステムを作っています。これは各機能をそれぞれまとめてるプラグインみたいなものです。
各種プログラミング言語や、フレームワーク、スペルチェッカーなどなどの Layer があり、その中に色々なelispのインストールや設定なんかが書いてあります。
なので、使いたい Layer をこのセクションで設定するだけで、そのプログラミング言語や機能の一通りの便利設定が使えるという事になります。これがまあすごく便利です。今までVimなんかでも新しいプログラミング言語のプラグインを使おうとするとプラグインを導入するのはもちろんのこと、neocompleteとの連携なんかも考えてあげたりする必要があったり、1つのプラグインだけでカバーできない機能は他のプラグインを見つけなきゃいけなかったりしましたが、Spacemacsはその点がものすごく楽です。
現在自分が設定してる Layer は こちら になります。リストアップすると…
基本機能系
- auto-completion
- better-defaults
- spell-checking
- syntax-checking
- org
- emoji
- eyebrowse
- osx
- dash
- gtags
- pandoc
eyebrowse というのはVimでいうタブにあたる機能を提供してくれます。使い勝手は若干違いますけども、自分の運用ではとても重宝してます。
あと初めて使い出したけど、 org が事の他便利でした。このためだけにEmacs使ってるって人を何人か見てましたが、マジで便利だわ。
osx はMacで使うときの便利機能が入ってました。optionをMetaとして使うとかそこら辺のキーバインドやおなじみの ⌘-z
とかそれ系のキーを使えるようにできたり。
VCS系
- version-control
- git
- github
github 使うとGistの編集や投稿なんかや、編集しているファイルのGitHubのリンクを取得したりできます。
プログラミング言語系
- emacs-lisp
- markdown
- themes-megapack
- shell
- javascript
- go
- elixir
- ruby
- haskell
- html
- ocaml
- python
- common-lisp
- typescript
- yaml
- clojure
- vimscript
- react
- ruby-on-rails
- ansible
- dockerfile
こんな感じです。
勉強中のとか仕事で使ってるのとか系のは大体入れてあります。あんまり、「あ、これが足りない…」みたいのはまだ起きてないですね。
dotspacemacs-additional-packages
Layer 便利なんですが、他に入れたいプラグインとかがあったらこのセクションで設定してあげるようです。
自分の現状は こちら です。
- editorconfig
- ddskk
- quickrun
これしか入れてません…。今のところこれで十分でした。 ddskk はもともと無いと日本語の入力ができないくらいに依存してるんですが、他もVimで使ってたのでという感じです。 migemoは入れようかとも思ったんですが、Vimでインストールしてたけど使用頻度が少なかったなーということで入れてません。
そういえば、3回ほどしくじったポイントがあって、それが入れようとするプラグインが既に Layer に入ってるというものです。
自分の場合、 evil-org 、 coffee-mode 、 gist.el 、 exec-path-from-shell などをこのセクションに入れてたんですが、そもそもこれら全部、上記の Layer に入ってたました…。
教訓としては、 プラグインを入れる前に <Space> h <Space>
でプラグイン名を検索して無ければ入れる という感じでしょうか。
思いのほかいろいろとプラグイン入ってます。
dotspacemacs/user-config ()
大体の自分の設定はこの関数の中に書くようです。自分の現状は こちら 。
dotspacemacs-additional-packages
で入れたプラグインの設定がメインになっています。 Layer の設定は全然してない。markdownのプレビューにMarked2っていうアプリ使うのとかくらい。
(fset 'evil-visual-update-x-selection 'ignore) について
一個重要な設定があって、それが (fset 'evil-visual-update-x-selection 'ignore)
という設定なんですが、この設定を入れておかないと、他のアプリでコピーしたものを、Emacsにビジュアルモードを使って選択した部分にペーストした場合に変な挙動になってしまいます。(Emacs内でyankしたものが貼られてしまう)
この設定を入れておくとちゃんとヴィジュアルモードで選択しても意図したペーストになります。
このIssue を参考にしました。
まとめ
設定ファイルに関しては、.vimrcが920行くらいある自分の状態から考えるとすごくすっきりしました。Spacemacsに移行する際に自分の中で機能とかの意識的な斷舎離したっていうも、もちろん大きいんですが。
この位の設定でさくっと使えるので、Spacemacs良いです。