前置き
spacemacsでsmartparens
をparedit
のキーバインディングで使っている。
たとえば以下のカーソル配置でCtrl + →
はA.の飲み込み、Ctrl + ←
はB.の吐き出し操作となる。
;; 初期状態(カーソルはaaaの隣)
(|aaa bbb) ccc
;; A. cccを飲み込み
(|aaa bbb ccc)
;; B. bbbを吐き出し
(|aaa) bbb ccc
矢印キー つらい
………
キーバインドを増やす
設定ファイル.spacemacs
の(defun dotspacemacs/user-config ())
内に以下のようなコードを追加すればよい。
.spacemacs
(defun dotspacemacs/user-config ()
;; paredit用に封じる
(define-key evil-insert-state-map (kbd "C-o") 'nil)
(define-key evil-insert-state-map (kbd "C-p") 'nil)
;; paredit前方飲み込み
(define-key evil-insert-state-map (kbd "C-p") 'paredit-forward-slurp-sexp)
;; paredit後方飲み込み
(define-key evil-insert-state-map (kbd "C-u") 'paredit-backward-slurp-sexp)
;; paredit前方吐き出し
(define-key evil-insert-state-map (kbd "C-o") 'paredit-forward-barf-sexp)
;; paredit後方吐き出し
(define-key evil-insert-state-map (kbd "C-i") 'paredit-backward-barf-sexp)
;; paredit括弧削除
(define-key evil-insert-state-map (kbd "C-d") 'paredit-splice-sexp)
)
上記の例では、evil-insert-state-map
(要するにvimのinsert mode)において、Ctrl + p
やCtrl + u
で飲み込み(slurp)操作、Ctrl + o
やCtrl + i
で吐き出し(barf)操作ができる。
また、Ctrl + d
で括弧を除去できる。
他のキーバインドと被らせると昇天する のでそこだけは慎重に…
今回の例でもinsert stateでのCtrl + o
とCtrl + p
が被っていたので、誠に遺憾ながら消えていただいた…