2010-10-21 12 views
12

Después de buscar algo, si tocas //, parece que obtienes el siguiente resultado. ¿Cómo es esto diferente de n? ¿Cómo deberías usarlo? ¿Con qué coincide //e y qué otras opciones existen para //?¿Cómo funciona el comando de búsqueda `//` en Vim?

+11

Las preguntas más frecuentes son bastante claras: "herramientas de software comúnmente utilizadas por los programadores", por lo que no creo que deba cerrarse. No veo muchos contadores ni personal de oficina que use Vim :-) – paxdiablo

+0

Haha, y también hay una etiqueta dedicada a Vim. – Chetan

Respuesta

16

de comandos La búsqueda es el siguiente formato:

/pattern/offset<cr> 

Si la parte pattern se deja fuera, la búsqueda es de la última patrón que se buscaba. Si el desplazamiento se omite, no se aplica compensación. El desplazamiento es básicamente qué hacer con el cursor una vez que haya encontrado su artículo pattern.

más vi usuarios están familiarizados con la variación sin un desplazamiento, /pax<cr> y la repetición de la última búsqueda, /<cr>, lo que equivale a n.

En sus ejemplos específicos, //<cr> es lo mismo que /<cr> y significa que debe repetir la última búsqueda y no aplicar ninguna compensación. Por ejemplo, //e<cr> significa repetir la última búsqueda y mover el cursor hasta el final del elemento encontrado. Los desplazamientos son:

[num]   [num] lines downwards, in column 1 
+[num]  [num] lines downwards, in column 1 
-[num]  [num] lines upwards, in column 1 
e[+num]  [num] characters to the right of the end of the match 
e[-num]  [num] characters to the left of the end of the match 
s[+num]  [num] characters to the right of the start of the match 
s[-num]  [num] characters to the left of the start of the match 
b[+num]  [num] identical to s[+num] above (mnemonic: begin) 
b[-num]  [num] identical to s[-num] above (mnemonic: begin) 
;{pattern} perform another search, see |//;| 

A más o menos sin num utiliza 1.

+0

¡Respuesta perfecta y sólida! ¡Gracias! – Chetan

4

//<CR> significa repetir la búsqueda del último patrón sin compensación.

//e<CR> significa que repite la búsqueda del último patrón, pero aterriza al final del partido.

n es lo mismo que /<CR> en que utiliza el último patrón y compensar el pasado, sin embargo n mantiene la última dirección mientras / siempre encuentra la próxima partido.

Consulte :h last-pattern y :h search-offset para obtener una explicación detallada de estos comandos y sus opciones.

+0

Entonces, ¿comienza '' 'a buscar desde la parte superior del archivo, entonces? – paxdiablo

+0

No, busca hacia adelante desde donde se encuentra. –

+2

Offset es (generalmente) donde se encuentra en el archivo, empezando por la parte superior. '//' repetirá la búsqueda desde donde se encuentra, mientras que 'n' repetirá la búsqueda desde donde estaba la última coincidencia. Por cierto, también puede usar '//' en los comandos sustitutos y globales. Es útil si tiene que hacer una coincidencia particularmente complicada y desea probarla con una búsqueda regular de antemano. – Alligator

9

Una de las buenas características de // es que puede usarlo con el comando s. Por lo tanto, si inicialmente busca /Foo y luego decide reemplazarlo con Bar, puede hacerlo sin repetir el patrón. Solo haga :%s//Bar/g

Obviamente esto es mucho más útil si el patrón es un poco más complejo.

Cuestiones relacionadas