Spacemacsに乗り換えてみた(2)キーバインド編


はじめに

  • Spacemacsを使っていて設定したことを「Spacemacsの乗り換えてみた(1)」にちょこちょこ付け足していたが、なんだか長くなってきたので分割することにした

キーバインドの設定

dotspacemacs/user-config()の抜き出し
(defun dotspacemacs/user-config ()
  "Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration.
This is the place where most of your configurations should be done. Unless it is
explicitly specified that a variable should be set before a package is loaded,
you should place your code here."

  ...
  ;;; personal key-bindings
  (bind-key "C-h" 'delete-backward-char)
  (bind-key "s-{" 'previous-buffer)
  (bind-key "s-}" 'next-buffer)
  (bind-key "s-[" 'previous-multiframe-window)
  (bind-key "s-]" 'next-multiframe-window)
  (bind-key "C-x o" 'ace-window)
  (bind-key "C-x C-m" 'smex)
  (bind-key "C-x m" 'smex-major-mode-commands)
  (bind-key "C-x C-j" 'dired-jump)
  (bind-key "C-x g" 'magit-status)
  (bind-key "C-x M-g" 'magit-dispatch-popup)
  ...
  ;;; ivy-flx
  (setq ivy-re-builders-alist '((t . ivy--regex-fuzzy)))
  )
  • ~/.spacemacsdotspacemacs/user-config()の中に追記する
  • キーバインドの他にも、ユーザ設定はここに書けばよい
  • すでに秘伝のinit.elを持ってる人は、ここにコピペすればよい
関数の説明の和訳
- ユーザ設定を書くための関数
- Spacemacsを起動後、一番最後に読み込まれる(レイヤーを使ったパッケージ読み込みよりも後)
- パッケージが読み込まれる前に設定すべき変数は例外だが、たいていの設定はここに書けばOK
  • パッケージ読み込みの前に設定したい内容はdotspacemacs/user-init()に書けばよいらしい
  • その関数の説明には「設定のタイミングがよく分かんなかったら、とりあえずuser-config()に書いてみ?」と書いてある

C-hdelete-backward-charにする

delete-backward-char
  (bind-key "C-h" 'delete-backward-char)
  • Emacsを使う場合に、まず設定すべきキーバインド(だと思っている)
  • C-hdelete-backward-charに置き換える
  • Spacemacsではuse-packageも使っているので、bind-keyを使って設定した
  • 今後、いろいろ追加する際、bind-keyのほうが見通しよく書けるため

バッファの移動をタブ感覚で

  (bind-key "s-{" 'previous-buffer)
  (bind-key "s-}" 'next-buffer)
  • 個人的にお気に入りのキーバインド
  • ブラウザでタブ移動するときと同じキーバインドで、バッファ移動ができる!
  • SPC b pSPC b nで同じことができる

ウィンドウ移動を簡単に

(bind-key "s-[" 'previous-multiframe-window)
(bind-key "s-]" 'next-multiframe-window)
(bind-key "C-x o" 'ace-window)
  • これも個人的に好み
  • バッファ移動と同じように⌘ + ], [で前のウィンドウ、次のウィンドウに移動できる
    • Spacemacsだと] w[ wに割り当てられている
  • デフォルトのC-x o (other-window)ace-windowに置き換えた

C-x C-msmexにする

smex
  (bind-key "C-x C-m" 'smex)
  ;; (bind-key "C-x m" 'smex-major-mode-commands)
  • Preludeではsmexを使っていたので、そのまま使えるようにしておいた
  • smex-major-mode-commandsは、そのバッファのメジャーモードで使えるコマンド候補をリストするコマンド。C-x mmu4e-compose-newに割り当てられているので、とりあえずコメントアウトしておく。

ディレクトリを開く

dired-jump
  (bind-key "C-x C-j" 'dired-jump)
  • これもPrelude使っていたころの名残り
  • jumpの意味がよく分からなけれど、いま表示されているバッファ(ファイル)があるディレクトリをdiredバッファとして開く
  • SPC f jで同じことができる

Magitを使いやすく

magit-status
  (bind-key "C-x g" 'magit-status)
  (bind-key "C-x M-g" 'magit-dispatch-popup)
  • Magitgitレイヤーを使うとインストールされる(はず)
  • matig-statusSPC g sに割り当てられているが、なじみのあるC-x gも追加した

ivyで曖昧マッチングをする

  • キーバインドの設定ではないが、ivyを使っていて、使いにくいと感じた点を改善
  • これまで使っていたidoではido-flxにしていたので、ivyを使った候補の絞り込みも同様に「fuzzy matching(曖昧マッチング)」可能にした
  • 変更点は Better fuzzy matching support in Ivy を参照(←Ivy作者の abo-aboさんのブログ記事)
  • Spacemacsのデフォルトだとivy--regex-ignore-orderだったので、ivy--regex-fuzzyに変更した

目次

  1. Spacemacsに乗り換えてみた(1)導入編
  2. Spacemacsに乗り換えてみた(2)キーバインド編
  3. Spacemacsに乗り換えてみた(3)レイヤー編
  4. Spacemacsに乗り換えてみた(4)ウェブ制作編
  5. Spacemacsに乗り換えてみた(5)メーラ編
  6. Spacemacsに乗り換えてみた(6)LaTeX編(予定)