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?


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ó.


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.


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.


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.


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.


7

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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.