読者です 読者をやめる 読者になる 読者になる

view-modeに viの insertモード移行みたいなのを追加してみた

emacs

Vi, Vimには 'i'とか 'a'とか 'A'とか 'o'とか 'O'があるので、
それを真似てみた。個人的に 'o'が好きです。次の行を編集したい
ということは結構ありますよね。

コード

たぶんこんな感じでいいと思います。
追記 'o'コマンドを修正

;; insert-mode
(defun my/view-insert ()
  (interactive)
  (toggle-read-only))
(define-key view-mode-map (kbd "i") 'my/view-insert)

(defun my/view-insert-bol ()
  (interactive)
  (back-to-indentation)
  (toggle-read-only))
(define-key view-mode-map (kbd "I") 'my/view-insert-bol)

(defun my/view-insert-after ()
  (interactive)
  (unless (eolp)
      (forward-char))
  (toggle-read-only))
(define-key view-mode-map (kbd "a") 'my/view-insert-after)

(defun my/view-insert-eol ()
  (interactive)
  (end-of-line)
  (toggle-read-only))
(define-key view-mode-map (kbd "A") 'my/view-insert-eol)

(defun my/view-insert-next-line ()
  (interactive)
  (toggle-read-only)
  (end-of-line)
  (newline-and-indent))
(define-key view-mode-map (kbd "o") 'my/view-insert-next-line)

(defun my/view-insert-prev-line ()
  (interactive)
  (beginning-of-line)
  (toggle-read-only)
  (save-excursion
    (newline)))
(define-key view-mode-map (kbd "O") 'my/view-insert-prev-line)