vim - ¿Cómo cambiar el nivel de granularidad de deshacer en emacs evil-mode con undo-tree?
emacs24 (2)
Estas son algunas opciones increíbles: emacs-24, modo malvado (usando enlaces vim en emacs) y deshacer-árbol.
Sin embargo, cuando estoy en modo de edición (modo de inserción), a veces salto para un número de inserciones, eliminaciones, etc., antes de ir a escape y salir del modo de inserción.
"Deshacer" toma la inserción completa (incluidas las eliminaciones) como una edición. Por ejemplo, no puedo deshacer el párrafo que eliminé accidentalmente sin deshacer la eliminación completa.
¿Hay alguna forma de arreglar esto?
Aquí hay algunos enlaces relacionados:
- Cómo Emacs determina una unidad de trabajo para deshacer.
- http://vim.wikia.com/wiki/Using_undo_branches
- http://vim.wikia.com/wiki/Modified_undo_behavior
- Este consejo probablemente tiene mejor explicación desde el lado vim.
Aquí están las asignaciones de vim que convierten ciertos comandos de vim para que se puedan deshacer:
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>
Lo que se necesita es que el modo Deshacer dentro de Emacs evil Undo-tree rastree eventos adicionales además de dejar el modo Insertar. Por ejemplo, debería poder permanecer en el modo de inserción durante mucho tiempo y luego deshacer cualquier tipo de eliminación, corte, pegado.
¿Es esto específico para deshacer el árbol? No lo uso, así que lo siguiente podría no aplicarse ...
No estoy seguro si puede modificar la cantidad de edición que el mecanismo de deshacer considera como una sola unidad, pero lo que puede hacer es:
Primero seleccione una región y luego escriba la tecla deshacer, y Emacs solo deshará los cambios que se hicieron en esa región.
Eso puede ser muy útil.
¿Intentaste mal-quiere-bien-deshacer?
(setq evil-want-fine-undo t)
http://gitorious.org/evil/evil/blobs/master/evil-vars.el#line195