Como ya obtuve 2 votos cercanos, creo que esto pertenece aquí ya que vim es el editor de un programador.
flybywire
28
Estoy de acuerdo, esto está relacionado con la programación y es una pregunta real.
DigitalRoss
41
Alguien por aquí da vueltas y marca cada pregunta de Vim como "pertenece a SU" a pesar de que la comunidad ha decidido hace mucho tiempo que Vim pertenece a SO, ya que es una herramienta de programación.
Brian Carper el
@Brian: ¿Tiene un enlace al documento donde se alcanzó este consenso?
demasiado php
12
meta.stackexchange.com/questions/20251/… pero recuerdo que esto surgió el año pasado en algún momento. Vim / Emacs son IDEs. Además, los idiomas utilizados en los archivos de configuración para ambos son lenguajes de secuencias de comandos completos de Turing, por lo que el acto de configurar Vim es, en sí mismo, la programación.
Solo me gustaría lanzar el complemento undoTree, súper increíble para las veces que aparentemente te has jodido con una ráfaga de deshacer y rehacer.
Jake Sellers
3
Si estoy leyendo sobre vi, entonces mis dedos solo actúan por su cuenta. Los comandos vi no funcionan en stackoverflow. :-)
ciscogambo
2
Nota para los usuarios de Mac: Ctrl + r en un terminal Mac arruinará tu día en vim. No sé la combinación de teclas adecuada en la terminal de Mac para deshacer, ¡pero definitivamente NO es Ctrl + r!
tpartee el
@tpartee Acabo de usar Ctrl + r en vim en la aplicación Terminal de macOS, no hay problemas aquí.
Jase el
3
¿Tal vez @tpartee quiso decir Cmd + rcosas desordenadas? Ciertamente hace algo raro; pero Ctrl + rfuncionó bien para mí (Mac + tmux + vim)
dwanderson
133
También echa un vistazo :undolist, que ofrece múltiples rutas a través del historial de deshacer. Esto es útil si accidentalmente escribe algo después de deshacer demasiado.
Use :earlier/ :later. Para rehacer todo lo que necesitas hacer
later 9999999d
(suponiendo que editó el archivo por primera vez hace 9999999 días como máximo) o, si recuerda la diferencia entre el estado de deshacer actual y el que necesitaba, use Nh, Nmo Nsdurante horas, minutos y segundos respectivamente. + :later N<CR><=> Ng+y :later Nfpara escrituras de archivos.
:laterfuncionó para mí en vi(no vim - busqué "vi" en google pero todos los resultados son para "vim"), ¡gracias!
Luc
@Luc Casi en todas partes donde tiene el vicomando es un enlace simbólico a un ejecutable vim o una copia del mismo. Aunque no completamente en todas partes.
ZyX
@ZyX Ojalá fuera cierto. Solo uso vi después de bash throws a vim: command not found. Lo siguiente que hago es alias vim=viporque lo escribo tan automáticamente, pero de todos modos es el viejo vi simple. Además, redo (ctrl + r) habría funcionado correctamente si vi hubiera sido un alias para vim.
Luc
2
9999999d es hace 27395 años. Supongo que la función de deshacer no se implementó en vi en ese entonces. Es posible que desee ahorrarse un esfuerzo de mecanografía exhaustivo y utilizar un número razonable. 9999d corresponde a unos 27 años, 999d a 2,7 años. Supongo que en la mayoría de los casos es suficiente ...
<Undo> or *undo* *<Undo>* *u*
u Undo [count] changes. {Vi: only one level}
*:u* *:un* *:undo*
:u[ndo] Undo one change. {Vi: only one level}
*CTRL-R*
CTRL-R Redo [count] changes which were undone. {Vi: redraw screen}
*:red* *:redo* *redo*
:red[o] Redo one change which was undone. {Vi: no redo}
*U*
U Undo all latest changes on one line. {Vi: while not
moved off of it}
Lo sé Ctrlren Vim, pero este enlace en particular no funciona en VsVim (¿al menos no en mi configuración?).
Lo que hace el trabajo sin embargo, es el comando :red. Esto es un poco más complicado que lo anterior, pero aún está bien cuando realmente lo necesita.
Votado negativamente porque la pregunta es específicamente sobre vim, no sobre Visual Studio.
John Von Neumann el
3
@JohnVonNeumann Esto está relacionado con Vim, o al menos los enlaces de vim, solo en el contexto de VS. Eso es lo que me trajo a esta pregunta, después de todo. Castigar a alguien por agregar un poco más de información parece un poco duro e innecesario, ¿no crees, incluso si tal vez se expande un poco más allá del alcance del OP?
Kjartán el
2
Hablando en términos prácticos, :undolistes difícil de usar y el seguimiento de cambios de Vim :earliery el :latertiempo solo se puede usar para arreglos generales .
Dado eso, recurro a un complemento que combina estas características para proporcionar un árbol visual de deshacer navegable, llamado "Gundo".
Obviamente, esto es algo para usar solo cuando necesita una solución detallada, o no está seguro del estado exacto del documento al que desea regresar. Ver: Gundo. Grafica tu árbol de deshacer Vim con estilo
Respuestas:
Ctrl+r
fuente
Cmd + r
cosas desordenadas? Ciertamente hace algo raro; peroCtrl + r
funcionó bien para mí (Mac + tmux + vim)También echa un vistazo
:undolist
, que ofrece múltiples rutas a través del historial de deshacer. Esto es útil si accidentalmente escribe algo después de deshacer demasiado.fuente
:undolist
y escriba:undo 178
(digamos) para retroceder al paso 178.:undolist
?Use
:earlier
/:later
. Para rehacer todo lo que necesitas hacer(suponiendo que editó el archivo por primera vez hace 9999999 días como máximo) o, si recuerda la diferencia entre el estado de deshacer actual y el que necesitaba, use
Nh
,Nm
oNs
durante horas, minutos y segundos respectivamente. +:later N<CR>
<=>Ng+
y:later Nf
para escrituras de archivos.fuente
:later
funcionó para mí envi
(no vim - busqué "vi" en google pero todos los resultados son para "vim"), ¡gracias!vi
comando es un enlace simbólico a un ejecutable vim o una copia del mismo. Aunque no completamente en todas partes.vim: command not found
. Lo siguiente que hago esalias vim=vi
porque lo escribo tan automáticamente, pero de todos modos es el viejo vi simple. Además, redo (ctrl + r) habría funcionado correctamente si vi hubiera sido un alias para vim.Documentación Vim
fuente
En modo comando, use la Utecla para deshacer y Ctrl+ rpara rehacer. Echa un vistazo a http://www.vim.org/htmldoc/undo.html .
fuente
Primero presione la Esctecla para salir del modo de edición.
Entonces,
Para deshacer , use la utecla tantas veces como desee deshacer.
Para rehacer , use la tecla Ctrl+r
fuente
Consulte la parte "deshacer" y "rehacer" del documento de Vim .
: rojo [o] (Rehacer un cambio que se deshizo) y {count} Ctrl+ r(Rehacer {count} cambios que se deshicieron) están bien.
Además, el : {count} anterior (ir al estado de texto anterior {count} veces) siempre podría ser un sustituto de deshacer y rehacer.
fuente
CTRL+r
La "r" es minúscula.
fuente
^r
y^R
, y Vim sigue eso.^X
(dondeX
puede haber cualquier letra).¿Usa VsVim para Visual Studio?
Encontré esto al experimentar con VsVim, que proporciona enlaces para los comandos de Vim en Visual Studio .
Lo sé Ctrlren Vim, pero este enlace en particular no funciona en VsVim (¿al menos no en mi configuración?).
Lo que hace el trabajo sin embargo, es el comando
:red
. Esto es un poco más complicado que lo anterior, pero aún está bien cuando realmente lo necesita.fuente
Hablando en términos prácticos,
:undolist
es difícil de usar y el seguimiento de cambios de Vim:earlier
y el:later
tiempo solo se puede usar para arreglos generales .Dado eso, recurro a un complemento que combina estas características para proporcionar un árbol visual de deshacer navegable, llamado "Gundo".
Obviamente, esto es algo para usar solo cuando necesita una solución detallada, o no está seguro del estado exacto del documento al que desea regresar. Ver: Gundo. Grafica tu árbol de deshacer Vim con estilo
fuente