Búsqueda y Reemplazo

El editor vi proporciona varios modos de encontrar una cadena de caracteres en el texto, así como de reemplazarlo.

Una cadena (string) es simplemente uno o más caracteres en fila. Puede incluir letras, números, signos de puntuación, caracteres especiales, espacios en blanco, tabulaciones o retornos de carro. Un string puede ser una palabra gramatical o puede ser una parte de una palabra. Para ir a una línea determinada de un fichero abierto se teclearía: #lineaG (Ejemplo. 6G)

Si no se indica un número de línea se consideraría la última del fichero.

Búsqueda

Para encontrar una cadena de caracteres, hay que escribir una barra hacia la derecha (/) seguida por la cadena que se desea buscar, y pulsar return.

El editor vi posiciona el cursor en la siguiente ocurrencia del string. Tecleando n se va a la siguiente ocurrencia de la cadena, y pulsando N a la anterior.

Si en lugar de una barra se escribiese una interrogación (?), la búsqueda sería hacia atrás, y las direcciones de las órdenes n y N se invertirían. Normalmente las búsquedas son case-sensitive. Si se quiere que el editor vi  ignore mayúsculas y minúsculas durante la búsqueda, hay que teclear previamente:

:set ic.

Para volver al cambio por defecto se teclearía:

:set noic

Ciertos caracteres especiales (/ & ! . ^ * $ \ ?) tienen un significado particular en el proceso de búsqueda, y por lo tanto deben especificarse de un modo especial cuando están incluidos en la cadena a buscar, colocando antes la barra hacia atrás (\).

Refinando la búsqueda

Se pueden realizar búsquedas más precisas, marcando la cadena de texto con indicadores de características tales como:

  • Principio de línea.- Para intentar emparejar el comienzo de una línea, hay que escribir antes del string a buscar el carácter ^
  • Fin de línea.- Para emparejar el final de una línea, hay que terminar el string a buscar por el carácter $
  • Principio de palabra.- Para emparejar el principio de una palabra, hay que teclear \<
  • Fin de palabra.- Para emparejar el final de una palabra, hay que teclear \> al final de la cadena de texto.
  • Comodines 
    • Para emparejar cualquier carácter, hay que teclear un punto en el string en la posición a emparejar. (igual que ? en los nombres de ficheros de MS-DOS)
    • Para buscar caracteres alternativos en una cadena de texto, se deben poner las alternativas entre corchetes, por ejemplo:
      • [md]xxx.- Encontraría las cadenas de texto mxxx y dxxx
      • [d-m]xxx.- Encontraría las cadenas de texto que comiencen por cualquier letra de la d a la m y sigan con xxx.
    • Para emparejar cero ó más ocurrencias del último carácter escrito, basta añadir un * en la cadena de texto.

Reemplazo

El procedimiento para reemplazar un string está es similar al de búsqueda arriba mencionado. Todos los caracteres especiales de emparejamiento se pueden usar también en una búsqueda+reemplazamiento. La forma básica de la orden es:

:g/string_buscado/s//string_cambiado/g

Se puede modificar el comando para parar la búsqueda y hacer que el editor vi pida confirmación antes de realizar el reemplazo, mediante la orden gc (consult), respondiendo y (sí) o n (no).

Para terminar el proceso bastaría con pulsar la combinación de teclas Ctrl-C.