f
と b
でもインデントできるようにする
リージョン範囲をインデントする C-x C-i (indent-rigidly)
のキーバインドはなぜか矢印キーです。ホームポジションから楽に押せないキーはあってないようなものなので、これじゃせっかくの便利機能を使うことができません。なので次のようにキーバインドを追加します。
(when (boundp 'indent-rigidly-map)
;; 矢印ではなく f b で簡単にインデントできるようにする
(define-key indent-rigidly-map (kbd "f") 'indent-rigidly-right-to-tab-stop)
(define-key indent-rigidly-map (kbd "b") 'indent-rigidly-left-to-tab-stop)
;; 1文字ずつインデントする方は滅多に使わないので shift 付きにする
(define-key indent-rigidly-map (kbd "F") 'indent-rigidly-right)
(define-key indent-rigidly-map (kbd "B") 'indent-rigidly-left)
;; C-x C-i を2連続でタイプした場合は使用頻度が高い右タブインデントに割り当て
(define-key indent-rigidly-map (kbd "C-x TAB") 'indent-rigidly-right-to-tab-stop)
;; vi ライクなキーバインドにしたいときは h l を使うのもいいかも
;; (define-key indent-rigidly-map (kbd "l") 'indent-rigidly-right-to-tab-stop)
;; (define-key indent-rigidly-map (kbd "h") 'indent-rigidly-left-to-tab-stop)
)
当初は shift 付きの場合だけ大きく移動するのが無難かと思いましたが、よく使う機能ほど簡単にしたかったので to-tab-stop の方を f b に割り当てています。
slim-mode で indent-rigidly を使ったときのタブ幅を直す
上の設定をしても slim-mode ではインデントが 8 も移動してしまってぜんぜん嬉しくありません。これを直します。slim-indent-offset が 2 なので、これを tab-width に設定しています。
(require 'slim-mode)
(add-hook 'slim-mode-hook
'(lambda ()
;; C-x C-i からの左右インデント幅を slim-mode のインデント幅に合わせる
(setq tab-width slim-indent-offset))))
これで C-x C-i f
のときのインデント幅が 2 になります。
参考