Вот некоторые удивительные варианты: emacs-24, evil-mode (с использованием привязок vim в emacs) и undo-tree.
Однако, когда я нахожусь в режиме редактирования (режим вставки), я иногда перескакиваю для нескольких вставок, удаляет и т.д., прежде чем удалять выход и оставить режим вставки.
"Отменить" берет всю вставку (включая удаление) как одно редактирование. Например, я не могу отменить абзац, который я случайно удалил, не отменив все удаление!
Есть ли способ исправить это?
Вот некоторые ссылки:
- Как Emacs определяет единицу работы для отмены
- http://vim.wikia.com/wiki/Using_undo_branches
- http://vim.wikia.com/wiki/Modified_undo_behavior
- Этот совет, вероятно, имеет лучшее объяснение со стороны vim.
Здесь представлены сопоставления vim, которые конвертируют определенные команды vim, чтобы их можно было отменить:
inoremap <c-u> <c-g>u<c-u>
inoremap <c-w> <c-g>u<c-w>
inoremap <End> <C-g>u<End>
inoremap <BS> <c-g>u<BS>
inoremap <CR> <c-g>u<CR>
inoremap <del> <c-g>u<del>
Что нужно для режима отмены внутри emacs evil undo-tree для отслеживания дополнительных событий, кроме того, что вы оставите режим вставки. Например, вы можете долго оставаться в режиме вставки, а затем отменить любые удаления, вырезать, вставить.