前置き
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が被っていたので、誠に遺憾ながら消えていただいた… ![]()