En vim, ¿cómo regreso a donde estaba antes de una búsqueda?

258

Programando en vim, a menudo busco algo, lo tiro, luego vuelvo a donde estaba, lo inserto, lo modifico.

El problema es que después de buscar y encontrar, necesito MANUALMENTE encontrar mi camino de regreso a donde estaba.

¿Hay alguna forma automática de volver a donde estaba cuando inicié mi última búsqueda?

Edward Tanguay
fuente
posible duplicado de mover el cursor a su última posición
Simone Carletti

Respuestas:

393

Ctrl+ Ome lleva a la ubicación anterior. No sé sobre la ubicación antes de la búsqueda.

Editar: Además, `.lo llevará al último cambio que realizó.

Agnel Kurian
fuente
También parece que presionar CTRL + O suficientes veces también comenzará a regresar a los archivos abiertos anteriormente.
Mark Biek
1
Ctrl + O es mi método preferido también. Lo uso constantemente y deseo que otros editores repitan su comportamiento.
amrox
45
Sí, CTRL-O y CTRL-I parecen llevarte de un lado a otro donde has estado, bien.
Edward Tanguay
8
Ctrl + T solo te llevará de regreso si llegaste allí usando una etiqueta. Si lo buscó sin usar etiquetas Ctrl + T lo llevará de regreso al lugar donde estaba antes de buscar su última etiqueta
Nathan Fellman el
1
He descubierto que si salto vía :70y luego :100, presionando ctrl+ouna vez, vuelve a la ubicación original, no a la línea 70. :(
WhyNotHugo
91

Úselo ``para volver a la posición exacta en la que estaba antes de buscar / saltar, o ''para volver al inicio de la línea en la que estaba antes de buscar / saltar.

Max Cantor
fuente
44
Solo funciona si estás en la primera partida, ya que si vas na las siguientes, no volverás a donde empezaste.
Kris
¿Qué pasa si buscaste e hiciste un cambio?
Costa
1
También puede usar g;y g,, va a la posición del cambio anterior / siguiente.
goetzc
39

Siempre lo he hecho marcando una marca.

  1. En modo comando, presione m[letra] . Por ejemplo, maestablece una marca en la línea actual utilizando a como identificador de marca.

  2. Para volver a la marca, presione '[letra] . Por ejemplo, lo 'alleva de vuelta a la marca de línea establecida en el paso 1. Para volver a la posición de columna de la fila donde marcó la línea, use `a( marca de retroceso [letra] ).

Para ver todas las marcas establecidas actualmente, escriba :marks.


En una nota ligeramente no relacionada, acabo de descubrir otra cosa ingeniosa sobre las marcas.

Digamos que saltas a marcar b haciendo mb. Vim establece automáticamente la marca '(que es una comilla simple) para que sea la línea en la que estaba antes de saltar a la marca b .

Eso significa que puede hacer 'bpara saltar a esa marca, luego hacer ''(2 comillas simples) para volver a donde estaba antes.

Descubrí esto accidentalmente usando el :markscomando, que muestra una lista de todas las marcas.

Mark Biek
fuente
66
afortunadamente, una marca a menudo es innecesaria ya que vim mantiene un seguimiento especial de algunas posiciones y le da acceso a ellas con ``, ^ O, etc. ''
aehlke
la marca solo parece llevarme al comienzo de la línea en la que se estableció. ):
Fzs2
1
@HermannIngjaldsson Es posible que ya lo haya descubierto, pero si usa 'lo llevará a la línea marcada', lo llevará a la ubicación exacta.
azmr
38

Realmente deberías leerlo :help jumplist, explica todo esto muy bien.

André
fuente
Me gusta más esta respuesta, hay MUCHA información en: ayuda que la mayoría de la gente no conoce (y no sabía hasta hace poco)
Christian Stewart
1
¡Qué gran lectura! Esto es super útil. <Co> y <Ci> para recorrer los lugares en los que has estado recientemente. Funciona a través de buffers por defecto:)
Costa
29

CTRL+Oy CTRL+I, para saltar hacia adelante y hacia atrás.

rebaja
fuente
7

La forma más sencilla es establecer una marca, con m[letter], y luego volver a ella con'[letter]

Paul Tomblin
fuente
Es un placer verte cuando busco consejos vim. He estado usando ctrl-o más junto con ctrl-i porque avanza y retrocede más fácil y más automáticamente.
MattK
7

Yo uso este:

nnoremap / ms/
nnoremap ? ms?

Luego, si busco algo usando /o ?, puedo volver rápidamente `s. Puede reemplazar la letra spor cualquier letra que desee.

Ethan Zhang
fuente
La única advertencia aquí es que se rompe la búsqueda en una ventana como NerdTree, donde mse define como algo diferente a la marca, en el caso de NerdTree es un menú.
Kris