Vim: ¿Cómo busca eficientemente el texto?

30

Siempre que desee buscar texto en vim, escriba /y luego la cadena que está buscando.

Sin embargo, cuando la cadena es larga y desea hacerlo varias veces, ¿hay alguna manera de hacerlo para que no tenga que escribir /andthisreallylongstringmás de una vez?

Templario oscuro
fuente
12
Te recomiendo que leas brevemente una hoja de trucos de Vim o consejos de Vim : puedes encontrar muchas otras formas de sacar más provecho de vim.
RedGrittyBrick
Protip: hay editores de texto para Linux que no requieren semanas de estudio para su uso.
BlueRaja - Danny Pflughoeft
44
@BlueRaja: no estoy seguro de que este sea un buen lugar para una guerra de editores. También para una guerra del sistema operativo, ya que también hay editores de texto agradables y fáciles de usar para Windows o Mac OS. Tener que estudiar cómo ser eficiente con un editor lo hará probablemente más eficiente al final que quedarse con las características básicas.
Benoit

Respuestas:

61

Presione "n" después de completar una búsqueda, luego se repetirá la acción anterior (búsqueda).

lamwaiman1988
fuente
12
Además, Niremos al resultado anterior.
Jin
15
Además, presionar la flecha hacia arriba después de /
presionar
66
También q/mostrará una ventana editable con todos los términos de búsqueda recientes.
UncleZeiv
77
Además, al presionar /e Intro se repetirá la búsqueda anterior. Al presionar ?e Intro se repetirá la búsqueda anterior hacia atrás.
Andy Lester
3
/Ctrl-Fes una alternativa a q/eso puede ser un mnemotécnico más fácil (ctrl-f == find). Al igual que q, también funciona para el modo de comando.
idbrii
34

Si la cadena que busca está debajo del cursor, puede escribir *para buscarla hacia adelante o #hacia atrás.

Didier Trosset
fuente
19

La forma en que generalmente busco es algo así;

  1. Prensa '/'
  2. Ingrese el término de búsqueda
  3. Presione Entrar
  4. Use 'n' y 'N' para navegar hacia adelante y hacia atrás dentro de la búsqueda.

Vim mantiene un historial de sus búsquedas, por lo que si necesita búsquedas anteriores, puede presionar '/' y usar las teclas ARRIBA y ABAJO o <Ctrl-P> <Ctrl-N> para explorar el historial de búsqueda.

También puedes usar '?' en lugar de '/' para buscar hacia atrás.

También me gusta usar:

set ignorecase smartcase

Ahora solo será una búsqueda entre mayúsculas y minúsculas si tiene caracteres en mayúscula en la cadena de búsqueda.

Valadas
fuente
15

Dos consejos adicionales que pueden hacer que su búsqueda sea más eficiente son set hlsearchy set incsearch.

  • set hlsearch, bueno, destaca sus resultados de búsqueda. Escriba :nohpara desactivarlos cuando ya no lo necesite.

  • set incsearch activa la búsqueda incremental.

    Extraído de :help incsearch

    Mientras escribe un comando de búsqueda, muestre dónde coincide el patrón, como se escribió hasta ahora. La cadena coincidente se resalta. Si el patrón no es válido o no se encuentra, no se muestra nada. La pantalla se actualizará con frecuencia, esto solo es útil en terminales rápidos.

    Sin incsearch, sus resultados solo se mostrarán después de presionar <CR>su palabra clave de búsqueda.

    Ejemplo:

    Quieres buscar wildignore

    ingrese la descripción de la imagen aquí

    Escribe /wildy la primera coincidencia se resalta automáticamente.

    ingrese la descripción de la imagen aquí

    Luego escribe iy pasa a la siguiente coincidencia correcta.

    ingrese la descripción de la imagen aquí

Jin
fuente
13

Otro consejo aún no cubiertos: Al pulsar los caracteres qy, a continuación /, le dará una lista de términos de búsqueda anteriores. Puede editarlos como cualquier otra línea en un documento y luego presionar enter para volver a usarlos en una nueva búsqueda.

Marcin
fuente
3
Estaba buscando esto. Esta es una nota importante y muy sobre el tema.
cincodenada
8

Después de presionar /para comenzar la búsqueda, puede presionar la flecha hacia arriba para desplazarse por el historial de búsqueda.

Puede ingresar una expresión regular para evitar tener que escribir todo el término de búsqueda: and.*longstring

Graham Borland
fuente
7

¿Simplemente golpear / sin argumentos a continuación no funciona para usted? En todos nuestros sistemas, eso provoca una repetición de la búsqueda que se realizó por última vez.

Kyle Banerjee
fuente
6

Hay un buen patrón que puede seguir para buscar texto extraído . Entonces ni siquiera tiene que escribir la palabra en sí misma, si ha navegado a ella por otro medio que no sea una búsqueda. En resumen, si está en el primer carácter de la palabra que desea buscar:

v
e
y
/
Ctrl-r
0
Enter

(luego continúe al próximo partido con n o N)

Sin embargo *(o #) logra casi lo mismo que todos estos comandos. La única diferencia es que puede ser flexible según la cantidad de la palabra que especifique (en lugar de e, al final de la palabra, puede seleccionar la cantidad que desee, por ejemplo, 9l)

Benedicto
fuente
1
  • /string - Buscar cadena hacia adelante
  • ?string - Buscar de nuevo la cadena
  • n - Buscar la siguiente instancia de cadena
  • N - Buscar instancia anterior de cadena
AbdulFattah Popoola
fuente
1

Mucho tiempo al programar querré buscar aVeryLongVariableNameInTheProgram.

En vim, puede arrastrar fácilmente el texto a un búfer / registro y luego buscarlo:

  • Poner el cursor en el primer caracter de la palabra
  • "Bywpara tirar texto aVeryLongVariableNameInTheProgramal búfer B (elige tu favorito, usé B)
  • /^RB (barra oblicua, Ctrl-R, B) para pegar el búfer B en la línea de búsqueda

Por supuesto, también puede tirar hasta el final de la línea, etc., en lugar de tirar una sola palabra; simplemente uso la secuencia anterior todo el tiempo.

Dan7119
fuente
1

Además, puede pegar el contenido de cualquier registro en el mensaje de búsqueda presionando Ctrl+ Ry luego el nombre del registro, por ejemplo, / Ctrl+ R0 Enter.

tdammers
fuente
Te creo una palabra.
dotancohen
0

¿La cadena larga que está ingresando es un nombre de variable? ¿O una cadena larga que está en tu texto? Luego presione *para buscar la palabra / cadena debajo del cursor.

Andy Lester
fuente