¿Cómo obtengo vim para mantener su historial de deshacer?

36

Si estoy editando dos archivos con vim, cambiar al otro archivo (: bnext,: bprev) parece eliminar el historial de deshacer del archivo abierto, presionando la tecla 'u' informa "Ya está en el cambio más antiguo".

Por ejemplo:

  1. vim testfile1 testfile2
  2. agregar algunas cosas a testfile1
  3. :w
  4. :bn
  5. :bp
  6. u
  7. eep! no se puede deshacer!

¿Hay alguna manera de mantener este historial para buffers no visibles?

Jeremy Kerr
fuente
¿Debería estar esto en superusuario o stackoverflow en su lugar?
Ressu
@Ressu: buen punto, ¿cómo lo sabemos? Meta pregunta publicada: meta.ubuntu.stackexchange.com/questions/47/…
Jeremy Kerr
Dependiendo del resultado de esa meta pregunta, es probable que elimine esto.
Jeremy Kerr

Respuestas:

42

La versión más reciente de vim (7.3) tiene deshacer persistente, por lo que puede hacer un cambio, cerrar vim por completo (incluso apagar y reiniciar), reiniciar vim y deshacer. En su .vimrc:

" tell it to use an undo file
set undofile
" set a directory to store the undo history
set undodir=/home/yourname/.vimundo/
precioso
fuente
11
Tenga en cuenta que primero debe crear el directorio, vim no lo hace automáticamente. Los archivos de deshacer se guardan utilizando la ruta del sistema de archivos (al mismo tiempo que se guarda el archivo). Si está dentro /home/peter, la edición .bashrccreará el archivo /home/peter/.vimundo/%home%peter%.bashrc.
Lekensteyn
19

Parece que esto lo hará:

:set hidden

(en .vimrc)

Jeremy Kerr
fuente
1

Puedes usar Viewports .
"vim -o testfile1 testfile2" - abre archivos en una ventana dividida.
": sp filename" - divide y abre "filename".
": nombre de archivo vsp": división vertical y "nombre de archivo" abierto.
"Ctrl + w + flecha" - Cambiar la ventana gráfica.

yevhene
fuente
Prefiero no mantener un búfer visible permanentemente para cada archivo; No es inusual tener> 20 archivos abiertos a la vez.
Jeremy Kerr