Vimの 'o'('O')とか 'f'('F')って使いたいことが多いので、
Emacs Lispで実装してみた。
;; 'o' 次の行に挿入
(defun edit-next-line ()
(interactive)
(end-of-line)
(newline-and-indent))
;; 'O' 前の行に挿入
(defun edit-previous-line ()
(interactive)
(forward-line -1)
(if (not (= (current-line) 1))
(end-of-line))
(newline-and-indent))
(global-set-key (kbd "M-o") 'edit-next-line)
(global-set-key (kbd "M-O") 'edit-previous-line)
;; 'f' 後方の入力した文字の上に移動
(defun forward-match-char (n)
(interactive "p")
(let ((c (read-char)))
(dotimes (i n)
(forward-char)
(skip-chars-forward (format "^%s" (char-to-string c))))))
;; 'F' 前方の入力した文字の上に移動
(defun backward-match-char (n)
(interactive "p")
(let ((c (read-char)))
(dotimes (i n)
(skip-chars-backward (format "^%s" (char-to-string c)))
(backward-char))))
(global-set-key (kbd "M-l") 'forward-match-char)
(global-set-key (kbd "M-L") 'backward-match-char)'Alt + キー'ではなく、Escを前に押すとより Vimっぽい感じで使えます。
M-fはさすがに同じにできないですので、違うキーにしました。
余談
こんなことが 1キーストロークできたら便利だなってことで、
いろいろ考えては割り当てていましたが、結局慣れなくて使わないのが
大半です。なんでひとつ思いついたら次々に新しいことを考えずにそれを
じっくり使ってみようかと思います。