Spacemacsを試す

小ネタ。同僚のvimmerがemacsに入門したいとのことだったのでspacemacsを試してみた。


導入

導入は極めて簡単。以下のコマンドを叩くだけ。

$ rm -fr ~/.emacs.d # 既存のemacs.dを削除
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

あとはemacsを起動し、設問に答えるだけ。今回はvim keybindを試してみたかったのでvimと答え、それ以外は適当に。

What is your preferred editing style?
-> vim

What distribution of spacemacs would you like to start with?
-> spacemacs

What type  of completion framework do you want?
-> ivy

~/.spacemacs が生成される。これで開発できるようになった。

カスタマイズ

~/.spacemacs.d/init.el を作成しても良いのだが、大してカスタマイズする気がない、dotfilesで管理するため ~/.spacemacs で管理することにした。

基本的にはspacemacs標準で用意してくれているものを軸にやると良さそうだ。

例えば、vimのようにrelativeな行番号をだしたい時は以下のように設定すると良さそうだ。

set number relativenumber
(defun dotspacemacs/init
  (setq-default
    dotspacemacs-line-numbers 'relative))

他にも基本的なpackageを入る時は dotspacemacs/layersotspacemacs-configuration-layers 内の記述コメントアウトすると勝手に入ってくれるみたいだ。

https://www.spacemacs.org/layers/LAYERS.html

(defun dotspacemacs/layers ()
  (setq-default
   # 省略
   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.
     ;; ----------------------------------------------------------------
     ivy
     auto-completion
     better-defaults
     emacs-lisp
     git
     markdown
     org
     ;; (shell :variables
     ;;        shell-default-height 30
     ;;        shell-default-position 'bottom)
     spell-checking
     syntax-checking
     version-control
     )))

また、自分でpackageをいれたい時は use-package を使うと良さそうだ。

以下のように hl-todo を入れてみたらちゃんとhighlightしてくれる。

(use-package hl-todo
  :ensure t
  :init
  (global-hl-todo-mode 1)
  :config
  (setq hl-todo-keyword-faces
        '(("HOLD" . "#d0bf8f")
          ("WAIT" . "#d0bf8f")
          ("TODO" . "#cc9393")
          ("NEXT" . "#dca3a3")
          ("THEM" . "#dc8cc3")
          ("REMIND" . "#dc8cc3")
          ("PROG" . "#7cb8bb")
          ("OKAY" . "#7cb8bb")
          ("DONT" . "#5f7f5f")
          ("FAIL" . "#8c5353")
          ("SOMEDAY" . "#8c5353")
          ("DONE" . "#afd8af")
          ("FIXME" . "#cc9393")
          ("???"   . "#cc9393"))))

Dotfiles

同僚を立派なemacsユーザにしたいし、もうちょっと研究をしたいのでdotfilesで入るようにした。やっぱコマンド一発で入るのは気持ち良いよね。

$ make dot-install
$ make spacemacs-install

Other

編集画面でのkeybindがvimと同じ、且つemacsを同じkeybindでも操作できるので不思議な感覚。

comment outも g c c などtyru/caw.vimと同じようなkeybindが割り当てられておりすごい。

:reg でvimと同じようにregisterをみれたり、:e <file path> でも移動でき、まんまvimと同じこともできる。(もちろん C-x C-f でもファイル移動ができる)


想像以上に環境構築が簡単でびっくりした。Emacsに一生入門できねえ2020の解決策の一つとして使えそうな気もする。