Deshacer es bueno tener en Vim. Pero a veces, en un buen momento conocido, quiero borrar mi historial de deshacer, para poder usarlo u
para 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 file
ohg rollback file
?u
para 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=" . &ul
m-1
, que en realidad no cambia su texto.'undofile'
está activado,:w
para borrar el archivo de deshacer, o encadenar comoUndoClear|w
.fuente
En un guion:
Luego usa
:Reset
para 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?