2008-09-10 17 views
238

Programación en vim A menudo busco algo, lo arranco, luego vuelvo a donde estaba, lo inserto, lo modifico.En vim, ¿cómo vuelvo a donde estaba antes de una búsqueda?

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

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

+0

posible duplicado de [Mover el cursor a su última posición] (http://stackoverflow.com/questions/5052079/move-cursor-to-its-last-position) –

Respuesta

354

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

Editar: También, `. lo llevará al último cambio que haya realizado.

+0

También parece que presionar CTRL + O las veces suficientes también comenzará a llevarlo a través de los archivos abiertos anteriormente. –

+1

Ctrl + O es mi método preferido también. Lo uso constantemente y deseo que otros editores repliquen su comportamiento. – amrox

+39

Sí, CTRL-O y CTRL-I parecen llevarte de ida y vuelta donde has estado, lindo. –

34

Siempre lo he hecho estableciendo una marca.

  1. En modo comando, pulse m [carta]. Por ejemplo, m a establece una marca en la línea actual usando a como identificador de marca.

  2. Para volver a la marca, presione '[letra]. Por ejemplo, 'un le lleva de nuevo al conjunto de marcas en el paso 1.

Para ver todas las marcas que actualmente se calculan, de tipo : marcas.


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

Digamos que saltas a la marca b haciendo 'b. 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 se puede hacer 'b para saltar a esa marca, y luego hacer '' (2 comillas simples) para saltar de nuevo a whever que eran antes.

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

+5

afortunadamente una marca a menudo es innecesaria ya que vim se mantiene especial seguimiento de algunas posiciones y le da acceso a ellas con '',^O, etc. – aehlke

+0

la marca solo parece llevarme al principio de la línea en la que se configuró.): –

+1

@HermannIngjaldsson Puede que ya se haya dado cuenta, pero al usar 'lo llevará a la línea marcada, 'lo llevará a la ubicación exacta. – azmr

7

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

+0

Es un placer verte cuando busco consejos de 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

84

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

+0

Solo funciona si estás en el primer partido, 'n'-ing en los partidos posteriores significa que no retrocedes a donde comenzó. – Kris

+0

¿Qué sucede si ha buscado e hizo un cambio? – Costa

31

Realmente debería leer :help jumplist explica todo esto muy bien.

+0

Me gusta esta respuesta, hay MUCHA información en: ayuda que la mayoría de la gente no conoce (y no lo hice hasta hace poco) –

7

utilizo éste:

nnoremap/ms/ 
nnoremap ? ms? 

Entonces si busco algo mediante el uso de / o ?, puedo volver rápidamente `s. Puede reemplazar la letra s a cualquier letra que desee.

+0

Solo Aquí hay una advertencia: se rompe la búsqueda en una ventana como NerdTree donde 'm' es definido como algo diferente a la marca, en el caso de NerdTree es menú. – Kris

24

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

Cuestiones relacionadas