view-mode

自分は, オートセーブ派.
だからソースを眺めるときは間違って変更したりしないように, C-xC-qで読取専用にしている.
そして, その読取専用時に, nとかpとかでカーソル移動できたら楽だなあと思って調べてたらいきついた.



M-x view-modeで起動.
これだけで読取専用になってくれる.
このマイナーモード上で使えるキーは以下の通り.
< バッファの先頭に移動
> バッファの最後に移動
z 1ページ分スクロール(PageDown)
w 1ページ分前にスクロール(PageUp)
d 半ページ分スクロール
u 半ページ分前にスクロール
C-m 1行下へ
y 1行上へ
= 現在カーソルのある行の行番号をミニバッファに出力
. マークする
x 現在のカーソルのある場所とマークのある場所を交換する
/ 正規表現で前を検索
\ 正規表現で後を検索
n 次の検索とマッチしたものへ移動
p 前の検索とマッチしたものへ移動
q view-modeを終了

その他, スペースでPageDown, バックスペースでPageUp, リターンで1行下へなどが使える.


C-mやyでは, カーソルが移動するのではなく, 画面が移動するようなので,
hjklで移動するようにしてみた.
まあ, 普通にC-pとかC-nで移動できるんだけどね.

;; view-minor-modeの設定
(add-hook 'view-mode-hook
          '(lambda()
             (progn
               ;; C-b, ←
               (define-key view-mode-map "h" 'backward-char)
               ;; C-n, ↓
               (define-key view-mode-map "j" 'next-line)
               ;; C-p, ↑
               (define-key view-mode-map "k" 'previous-line)
               ;; C-f, →
               (define-key view-mode-map "l" 'forward-char)
               )))



このマイナーモード, C-xC-qで起動はしてるみたいだけど,
(たぶん, そんな真剣にソース読んだわけじゃないから間違ってるかも.)
他にも色々やっているようでこのコマンドたちが効いてくれない.
問題ないなら, C-xC-qをこのview-modeで潰しても悪くないなあ.