Pregunta:
A veces estoy en un sistema sin Vim y uso el nvi
predeterminado (sistemas BSD) o el vi
original (Arch Linux).
Hay bastantes diferencias, pero la mayor molestia es que solo puedo deshacer mi última operación. Al presionar u la segunda vez, los trabajos son un "rehacer".
¿Hay alguna forma de hacer que esto funcione?
Respuesta:
Desde nvi(1)
:
u Undo the last change made to the file. If repeated, the u command
alternates between these two states. The . command, when used
immediately after u, causes the change log to be rolled forward or
backward, depending on the action of the u command.
Entonces presione u , y luego siga presionando . para más deshacer; Si presiona u nuevamente, se 'invertirá' la dirección y la presión . será un rehacer.
Nunca supe de esto hasta ayer; y pensé que de alguna manera era una característica nueva, pero parece que ha funcionado así desde al menos nvi 1.79 de 1996 .
Esto no funciona en el vi original ; donde el deshacer se documenta como:
u Undoes the last change made to the current buffer. If repeated,
will alternate between these two states, thus is its own
inverse. When used after an insert which inserted text on more
than one line, the lines are saved in the numeric named buffers
(3.5).
Lo cual es realmente una forma complicada de decir que presionando u nuevamente se rehacerán los cambios.
Que es también lo que dice Vim's :help undo
(y por qué asumí que tampoco funcionaría en nvi
):
u Undo [count] changes. {Vi: only one level}