Guía avanzada del usuario

Uso de los comandos ex

Los comandos de ex son más precisos y convenientes que tirar, borrar, y poner cuando esté trabajando con bloques grandes de texto. En vez de contar líneas en la pantalla y después buscar un punto de inserción, dará a vi un rango de líneas a mover o copiar y después especificar la línea antes del punto de inserción (por supuesto, con un comando de eliminación no es necesario un punto de inserción).

Cómo activar y desactivar la numeración de las líneas

Para activar la numeración de las líneas, escriba :set nu y presione Retorno.

Los números de las líneas aparecerán en el margen izquierdo. Observe que estos números no aparecerán si imprime el archivo. Sólo son visibles en pantalla.

1 El deseo de escribir con mayor rapidez,
2 y la necesidad de encerrar en poco
3 muchas noticias, fueron causa de
4 abreviar ciertos vocablos que
5 pudieran adivinarse fácilmente.
6
7
8
~
~
~
~
~
~
:set nu

Para desactivar la numeración de las líneas, escriba :set nonu y presione Retorno.

Cómo copiar líneas

El formato básico del comando copiar en ex es:

:line#,line# co line#

Los primeros dos números (separados por una coma) especifican el rango de líneas a copiar. El tercer número es la línea antes del punto de inserción.

Por ejemplo, para copiar las líneas de la 1 a la 5 de texto y situar la copia después de la línea 12, debe escribir lo siguiente:

:1,5 co 12

y presionar Retorno.

Para especificar rangos de líneas puede utilizar estas abreviaturas:

Por tanto, para copiar el rango "desde la línea actual hasta la línea 5" e insertar este texto a partir de la línea 12, debe escribir:

:1,5 co 12

Para copiar el rango "desde la línea 6 hasta el final del archivo" e insertar este bloque después de la línea 2, debe escribir:

:6,$ co 2

Cómo mover líneas

El formato básico del comando de mover en ex es parecido al comando de copiar explicado anteriormente:

:line#,line# m line#

Los rangos de líneas y los puntos de inserción se especifican de igual forma, incluyendo el uso de las abreviaturas . y $. La diferencia en el funcionamiento es simplemente que "move" elimina un bloque de una posición y lo coloca en otra.

Por ejemplo, para mover las líneas de la 1 hasta la 5 a la línea siguiente a la 12, debe escribir:

:1,5 m 12

y presione Retorno.

Cómo eliminar líneas

Para eliminar un rango de líneas, use este formato del comando:

:line#,line# d

Por ejemplo, para eliminar las líneas de la 1 a la 5, debe introducir:

:1,5 d

Cómo buscar y reemplazar con vi

vi ofrece distintas formas de situarse en un archivo localizando una cadena de caracteres. También dispone de una potente función de reemplazo general.

Cómo buscar una cadena de caracteres

Una cadena de caracteres consiste simplemente en una serie de caracteres puestos en fila. Puede contener letras, números, signos de puntuación, caracteres en pantalla, espacios en blanco, tabulaciones, o retornos de carro. Una cadena puede ser una palabra gramatical o cualquier parte de una palabra.

Para encontrar una cadena de caracteres, escriba / seguido de la cadena que quiera buscar, y a continuación presione Retorno. vi sitúa el cursor en la siguiente aparición de la cadena. Por ejemplo, para encontrar la cadena "meta", escriba /meta y a continuación Retorno.

Introduzca n para ir a la siguiente aparición de la cadena; escriba N para ir a la aparición previa.

Para buscar hacia atrás en el archivo, puede utilizar ? en vez de /. En este caso, el sentido de la dirección en n y N está cambiado.

La operación de buscar normalmente distingue entre mayúsculas y minúsculas: si busca "china" no encontrará "China". Si quiere que vi no distinga entre mayúsculas y minúsculas al buscar, escriba :set ic. Para volver al modo por omisión, que tiene en cuenta las mayúsculas y minúsculas, escriba :set noic.

Si vi encuentra la cadena solicitada, el cursor se parará en su primera aparición. Si no encuentra la cadena, vi mostrará el mensaje Muestra no encontrada en la última línea de la pantalla.

Ciertos caracteres especiales ( / & ! . ^ * $ \ ?) tienen un significado especial en el proceso de búsqueda y deben ir precedidos de una barra inversa cuando se utilizan en una búsqueda. Para "escapar" un carácter especial, hágalo preceder de una barra inversa (\). Por ejemplo, para buscar la cadena "cómo?" escriba /cómo\? y presione Retorno.

Estos caracteres especiales pueden utilizarse como comandos de la función de búsqueda, por lo que si quiere buscar una cadena que incluye uno o más de estos caracteres, debe indicarlo precediendo el carácter con una barra inversa. Para escapar de la propia barra inversa, escriba \\.

Búsqueda más exacta

Puede hacer la búsqueda más precisas marcando la cadena con indicadores para las siguientes características:

Para que coincida con el principio de línea, comience la cadena de caracteres con el símbolo (^). Por ejemplo, para encontrar la siguiente línea que empiece con "Buscar", escriba:

/^Buscar

Para que coincida con el final de línea, termine la cadena de caracteres con un signo dólar ($). Por ejemplo, para encontrar la siguiente línea que termine con "buscar.", escriba:

/buscar\.$

(Observe que el punto va precedido por una barra inversa).

Para que coincida con el principio de palabra, escriba \< al principio de la cadena de caracteres, para que coincida con el final de palabra, escriba \> al final de la cadena de caracteres. Así, para que concuerde exactamente una palabra y no una cadena, combine las marcas de principio de palabra y de final de palabra en el patrón de búsqueda. Por ejemplo, para encontrar la siguiente aparición de la palabra -en oposición a la cadena -"buscar", escriba:

/\<search\>

Para indicar un carácter cualquiera, escriba un punto (.) en la cadena en la posición donde coincide. Por ejemplo, para encontrar la siguiente aparición de "informe" o "informa", escriba:

/inform.

Debido a que con esto se busca una cadena y no una palabra, este modelo de búsqueda podría encontrar construcciones como "información" e "informal".

Para buscar caracteres alternativos en una cadena, escriba las alternativas entre corchetes. El modelo de búsqueda /[md]cadena encontrará las cadenas que empiecen por m o d. Por otra parte, /[d-m]cadena encontrará las cadenas que empiecen por cualquier letra entre la d y la m.

Para coincidir con cero o más apariciones del último carácter, escriba un símbolo asterisco (*) en la cadena. Puede combinar para más efectividad los corchetes junto con el asterisco para buscar alternativas muy concretas. Por ejemplo, para buscar todas las cadenas que terminen con cualquier letra desde la a hasta la z y que empiecen en "inform" y además encontrar las apariciones de "inform", escriba:

/inform[a-z]*

Cómo reemplazar una cadena de caracteres

El procedimiento para reemplazar una cadena de texto está basado en los procedimientos de búsqueda explicados anteriormente. Todos los caracteres especiales para las comparaciones en las búsquedas pueden utilizarse en la operación de buscar y reemplazar.

El formato básico del comando es:

:g/search-string/s//replace-string/g

seguido de la tecla Retorno.

Por tanto, para reemplazar cualquier aparición de la cadena de caracteres "informe" con "documento", debe escribir:

:g/informe/s//documento/g

y pulsar Retorno.

Puede modificar este comando para detener la búsqueda y hacer que vi le pregunte cada vez si desea reemplazar o no. El comando siguiente utiliza gc (agregando c de "consultar") para hacer que vi se detenga en cada aparición de "informe" y le pregunte si desea sustituir la cadena. Responda y para sí o n para no.

:g/disinformation/s//newspeak/gc


Nota -

Puede cancelar una búsqueda y reemplazamiento "consultada" presionando Ctrl-C.


Cómo ir a una línea específica

Para ir a la última línea de un archivo abierto, escriba G. y para volver a la primera línea del archivo, escriba 1G.

Puede ir a cualquier otra línea escribiendo su número seguido de G.

Por ejemplo, suponga que sale del archivo texto mientras editaba la línea 51. Puede acceder a esa línea abriendo el archivo y escribiendo 51G.