[emacs] emacsをvimライクなキーバインドにして遊ぶ


ここのチュートリアルをしてみた.

実行方法は、まずbufferをlisp-interactive-modeにし、以下にあるS式を個別に評価(C-x C-e or C-j)すると、hjklはvimライク名キーバイドに設定され移動ボタンに変化する。よってhjkl文字列はすべてこれ以降打てなくなります(ノ∀`)

(setq my-local-map (make-keymap))

(define-key my-local-map "h" 'backward-char)

(define-key my-local-map "j" 'previous-line)

(define-key my-local-map "k" 'next-line)

(define-key my-local-map "l" 'forward-char)

(use-local-map my-local-map)

似たような考えでinteractive関数として、現在時刻を表記する関数は以下のようにして作ることができる

(defun insert-current-time()
  (interactive)
  (insert (current-time-string)))

(define-key global-map "\C-ct" 'insert-current-time)

これを個別に評価し、C-c tを実行するとWed Jul 11 05:04:46 2007 といった風に現在時刻を表記する関数を作成することができます。

また、_emacs内にこれをいれると、いつでもC-c tコマンドで現在時刻をbufferに挿入することができるようになります。

ChangelogをC-c 4 aで編集している時等において、現在時刻を挿入してくれる機能はそこそこありがたいものだと思います。ただし実際に使う場合において、2007とか年度まで入れるのは少し冗長なのでformatとかを工夫する必要はあると思います。