Deshacer es bueno tener en Vim. Pero a veces, en un buen momento conocido, quiero borrar mi historial de deshacer, para poder usarlo upara deshacer cambios individuales, pero solo de regreso a un cierto punto. (Por ejemplo, esto podría ser la última vez que me comprometí).
Una forma de lograr esto sería cerrar y volver a abrir el archivo: el historial de deshacer comienza limpio en ese punto. Pero eso es una molestia.
En el pasado, logré esto con :edit!. Pero en Vim 7.3, eso no descarta el historial de deshacer.
¿Hay otra forma de hacer esto, además de cerrar el archivo?

git checkout -f fileohg rollback file?upara deshacer cambios individuales, pero no más allá del punto donde me comprometí por última vez. Exactamente como si, cada vez que me comprometiera, cerrara el archivo y lo volviera a abrir. Que es lo que:edit!solía hacer: era como cerrar el archivo y volver a abrirlo. Esto NO TIENE que estar vinculado a un punto de confirmación, ese es el momento en que lo quiero con mayor frecuencia.Respuestas:
debe hacer lo que pides.
fuente
El viejo: editar! comportamiento en una línea:
fuente
:h :exe,:h :bar,:h :set-args,:h 'ul'y:h :edit!.La función de Benoit no funcionó para mí, pero encontré algo similar en el manual de vim, aquí:
http://www.polarhome.com/vim/manual/v73/undo.html#undo-remarks
Lo puse en una función, lo agregué a mi vimrc y parece estar funcionando bien en vim 7.3:
Esto se puede usar con
:ClearUndo.fuente
Probablemente:
(
'ul'es alias para'undolevels').fuente
:edit!. Para empezar, hice una función llamada ClearUndos () con los comandos que enumeró, pero llamarlo no parece hacer nada, mientras que hacer los comandos individualmente sí ...:command -nargs=0 Reset let old_ul=&ul | set ul=-1 | e! | let &ul = old_ul | unlet old_ul|en un contenido de comando. Luego cree una función que haga lo que le dije en mi respuesta y configure el comando encall thefunction()."Borrar historial de deshacer (: w para borrar el archivo de deshacer si se presenta)
command! -bar UndoClear exe "set ul=-1 | m-1 | let &ul=" . &ulm-1, que en realidad no cambia su texto.'undofile'está activado,:wpara borrar el archivo de deshacer, o encadenar comoUndoClear|w.fuente
En un guion:
Luego usa
:Resetpara llamarlo.fuente
set ul=comando solo afecta a una variable local hasta que sale el script, y dado que lo cambiamos antes de que el script salga, nunca afecta el entorno? ¿Probaste esta función y la hiciste funcionar? Es decir, ¿hay algo extraño en mi configuración?