En este capítulo, entenderemos cómo funciona el editor vi en Unix. Hay muchas maneras de editar archivos en Unix. Editar archivos usando el editor de texto orientado a la pantalla vi es una de las mejores maneras. Este editor le permite editar líneas en contexto con otras líneas en el archivo.
Una versión mejorada del editor vi que se llama VIM también se ha hecho disponible ahora. Aquí, VIM significa Vi IMproved.
vi es generalmente considerado el estándar de facto en los editores de Unix porque –
-
Suele estar disponible en todos los sabores del sistema Unix.
-
Sus implementaciones son muy similares en todos los ámbitos.
-
Requiere muy pocos recursos.
-
Es más fácil de usar que otros editores como el ed o el ex.
Puede utilizar el editor vi para editar un archivo existente o para crear un nuevo archivo desde cero. También puede utilizar este editor para simplemente leer un archivo de texto.
Iniciar el editor vi
La siguiente tabla enumera los comandos básicos para utilizar el editor vi –
Sr.No. | Comando & Descripción |
---|---|
1 | vi nombre de archivo
Crea un nuevo archivo si no existe ya, en caso contrario abre un archivo existente. |
2 |
vi -R nombrearchivo Abre un archivo existente en modo de sólo lectura. |
3 | Ver nombre de archivo
Abre un archivo existente en el modo de sólo lectura. |
El siguiente es un ejemplo para crear un nuevo archivo testfile si no existe ya en el directorio de trabajo actual –
$vi testfile
El comando anterior generará la siguiente salida –
|~~~~~~~~~~~~"testfile"
Notarás una tilde (~) en cada línea que sigue al cursor. Una tilde representa una línea no utilizada. Si una línea no comienza con una tilde y parece estar en blanco, hay un espacio, un tabulador, una nueva línea o algún otro carácter no visible.
Ahora tiene un archivo abierto para empezar a trabajar. Antes de continuar, vamos a entender algunos conceptos importantes.
Modos de operación
Mientras se trabaja con el editor vi, normalmente nos encontramos con los siguientes dos modos –
-
Modo comando – Este modo le permite realizar tareas administrativas como guardar los archivos, ejecutar los comandos, mover el cursor, cortar (yanking) y pegar las líneas o palabras, así como encontrar y reemplazar. En este modo, todo lo que se escribe se interpreta como un comando.
-
Modo de inserción – Este modo le permite insertar texto en el archivo. Todo lo que se escribe en este modo se interpreta como entrada y se coloca en el archivo.
-
vi es sensible a las mayúsculas y minúsculas.sensible a las mayúsculas y minúsculas. Hay que prestar atención a las mayúsculas cuando se usan los comandos.
-
La mayoría de los comandos en vi pueden ir precedidos del número de veces que se quiere que ocurra la acción. Por ejemplo, 2j mueve el cursor dos líneas hacia abajo de la ubicación del cursor.
vi siempre se inicia en el modo de comando. Para introducir texto, debe estar en el modo de inserción, para lo cual basta con teclear i. Para salir del modo de inserción, pulse la tecla Esc, que le llevará de nuevo al modo de comandos.
Pista – Si no está seguro de en qué modo se encuentra, pulse la tecla Esc dos veces; esto le llevará al modo de comandos. Abra un archivo utilizando el editor vi. Empieza escribiendo algunos caracteres y luego pasa al modo de comandos para entender la diferencia.
Salir de vi
El comando para salir de vi es :q. Una vez en el modo de comandos, escribe dos puntos, y ‘q’, seguido de return. Si su archivo ha sido modificado de alguna manera, el editor le advertirá de ello, y no le permitirá salir. ¡Para ignorar este mensaje, el comando para salir de vi sin guardar es :q! Esto le permite salir de vi sin guardar ninguno de los cambios.
El comando para guardar el contenido del editor es :w. Puede combinar el comando anterior con el comando quit, o utilizar :wq y return.
La forma más sencilla de guardar los cambios y salir de vi es con el comando ZZ. Cuando esté en el modo de comando, escriba ZZ. El comando ZZ funciona de la misma manera que el comando :wq.
Si quiere especificar/escribir algún nombre particular para el archivo, puede hacerlo especificándolo después de la :w. Por ejemplo, si quiere guardar el archivo en el que está trabajando como otro nombre de archivo llamado nombredearchivo2, escribiría :w nombredearchivo2 y volvería.
Movimiento dentro de un archivo
Para moverse dentro de un archivo sin afectar a su texto, debe estar en el modo de comandos (pulsar Esc dos veces). La siguiente tabla enumera algunos comandos que puedes utilizar para moverte de un carácter a otro –
iv.No. | Comando & Descripción | 1 | k
Mueve el cursor hacia arriba una línea |
2 | j
Mueve el cursor hacia abajo una línea |
---|---|
3 |
h Mueve el el cursor a la izquierda una posición de carácter |
4 |
Hay que tener en cuenta los siguientes puntos para moverse dentro de un archivo –
Hay muchas otras maneras de moverse dentro de un archivo en vi. Recuerde que debe estar en el modo de comando (presione Esc dos veces). La siguiente tabla enumera algunos comandos para moverse por el archivo –
A continuación se muestra la lista de comandos para moverse por el archivo.
Sr.No. | Comando & Descripción | 1 | 2 | Posiciona el cursor al final de una línea |
---|---|---|---|
3 | w
Posiciona el cursor en la siguiente palabra |
||
4 |
b Posiciona el cursor en la anterior palabra |
||
5 | |||
6 | .
) Posiciona el cursor al principio de la siguiente frase |
||
E
Se desplaza al final de la palabra |
|||
Mueve un párrafo hacia atrás |
9 |
Mueve un párrafo hacia delante . |
10 | ]
Mueve un apartado hacia delante |
12 | n|
Se mueve a la columna n en la línea actual |
||
13 | 1G
Se mueve a la primera línea del fichero |
14 |
G Se mueve a la última línea del fichero |
15 | nG
Se mueve a la enésima línea del fichero |
16 | :n
Se desplaza a la enésima línea del fichero |
17
fc Se desplaza hacia delante hasta c |
18 Fc Se desplaza hacia atrás a c |
||
19 | |||
20 |
nH Se mueve a la enésima línea de la parte superior de la pantalla |
21 |
Se mueve a la mitad de la pantalla |
22 | L
Se mueve a la parte inferior de la pantalla |
23 | nL
Se desplaza a la enésima línea desde la parte inferior de la pantalla |
24 |
Comandos de control
Los siguientes comandos pueden utilizarse con la tecla de control para realizar las funciones que se indican en la siguiente tabla –
A continuación se muestra la lista de comandos de control.
Sr.No. | Comando & Descripción |
---|---|
1 | CTRL+d
Avanza 1/2 pantalla |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Edición de archivos
Para editar el archivo, hay que estar en el modo de inserción. Hay muchas formas de entrar en el modo de inserción desde el modo de comandos –
iv.No. | Comando & Descripción | ||
---|---|---|---|
1 | i
Inserta texto antes de la ubicación actual del cursor |
||
. | 2 | I
Inserta texto al principio de la línea actual |
3 |
a Inserta texto después de la posición actual del cursor |
4 |
A Inserta texto al final de la línea actual |
5 |
o Crea una nueva línea para la entrada de texto por debajo de la ubicación del cursor |
||
6 | O
Crea una nueva línea para la entrada de texto por encima de la ubicación del cursor |
Borrar caracteres
Aquí hay una lista de comandos importantes, que se pueden utilizar para eliminar caracteres y líneas en un archivo abierto –
Sr.No. | Comando & Descripción | |
---|---|---|
1 |
x Elimina el carácter bajo la ubicación del cursor |
2 |
X Elimina el carácter anterior a la ubicación del cursor |
3 | ||
4 |
Elimina desde la posición actual del cursor hasta el principio de la línea |
|
5 | ||
6 | D
Elimina desde la posición del cursor hasta el final de la línea actual |
7 |
Como se ha mencionado anteriormente, la mayoría de los comandos en vi pueden ir precedidos por el número de veces que quieres que se produzca la acción. Por ejemplo, 2x borra dos caracteres bajo la ubicación del cursor y 2dd borra dos líneas en las que se encuentra el cursor.
Se recomienda practicar los comandos antes de seguir adelante.
Comandos de cambio
También tiene la capacidad de cambiar caracteres, palabras o líneas en vi sin borrarlas. Aquí están los comandos relevantes –
Sr.No. | Comando & Descripción | |
---|---|---|
1 | cc
Elimina el contenido de la línea, dejándolo en modo inserción. |
|
cw
Cambia la palabra en la que se encuentra el cursor por la w minúscula del final de la palabra. |
3 | |
4 | R
Sobreescribe múltiples caracteres comenzando por el carácter actualmente bajo el cursor. Debe utilizar Esc para detener la sobrescritura. |
|
5 |
s Reemplaza el carácter actual con el carácter que se escribe. Después, se queda en el modo de inserción. |
|
6 | ||
Comandos de copiar y pegar
Puedes copiar líneas o palabras de un lugar y luego puedes pegarlas en otro lugar utilizando los siguientes comandos –
iv.No. | Comando & Descripción | 1 |
---|---|
yw
Copia la palabra actual desde el carácter en el que se encuentra el cursor de la w minúscula, hasta el final de la palabra. |
|
3 | |
4 |
Comandos avanzados
Hay algunos comandos avanzados que simplifican la edición del día a día y permiten un uso más eficiente de vi –
A continuación se ofrece la lista de comandos avanzados.
Sr.No. | Comando & Descripción | |
---|---|---|
J
Une la línea actual con la siguiente. Una cuenta de comandos j une muchas líneas. |
||
2 | ||
3 | ||
4 | ||
5 | ^G
Pulsa las teclas Ctrl y G al mismo tiempo para mostrar el nombre de archivo actual y el estado. |
|
6 | 7 | |
8 | J
Une la línea actual con la siguiente. Una cuenta une esa cantidad de líneas. |
|
9 | :f
Muestra la posición actual en el archivo en % y el nombre del archivo, el número total de archivo. |
|
10 | :f renombra el fichero actual a nombre de fichero.
Redacta el fichero actual a nombre de fichero. |
:w nombre de fichero
Escribe a nombre de fichero. |
12 | :e nombrearchivo
Abre otro archivo con nombrearchivo. |
|
13 | :cd nombre de archivo
Cambia el directorio de trabajo actual a nombre de archivo. |
14 |
:e # Cambia entre dos archivos abiertos. |
15 | :n
En caso de que abra varios archivos con vi, utilice :n para ir al siguiente archivo de la serie. |
|
16 | :p
En caso de que abra varios archivos usando vi, use :p para ir al archivo anterior de la serie. |
|
17 | :N
En caso de abrir múltiples archivos usando vi, usa :N para ir al archivo anterior de la serie. |
|
18 | :r archivo
Lee el archivo y lo inserta después de la línea actual. |
19 | :nr archivo
Lee el archivo y lo inserta después de la línea n. |
Búsqueda de palabras y caracteres
El editor vi tiene dos tipos de búsqueda: de cadenas y de caracteres. Para una búsqueda de cadenas, se utilizan los comandos / y ? Cuando se inician estos comandos, el comando que se acaba de escribir se mostrará en la última línea de la pantalla, donde se escribe la cadena concreta a buscar.
Estos dos comandos sólo se diferencian en la dirección en la que se realiza la búsqueda –
-
El comando / busca hacia delante (hacia abajo) en el archivo.
-
El comando ? busca hacia atrás (hacia arriba) en el archivo.
Los comandos n y N repiten el comando de búsqueda anterior en la misma dirección o en la opuesta, respectivamente. Algunos caracteres tienen un significado especial. Estos caracteres deben ir precedidos de una barra invertida (\) para ser incluidos como parte de la expresión de búsqueda.
Sr.No.
|
Caracteres &Descripción | 1 |
---|---|
Empareja un solo carácter. | 3 |
* Empareja cero o más del carácter anterior. |
4 | |
5 | [
Inicia un conjunto de expresiones coincidentes o no coincidentes. |
6 | |
7 |
La búsqueda de caracteres busca dentro de una línea para encontrar un carácter introducido después del comando. Los comandos f y F buscan un carácter en la línea actual solamente. f busca hacia adelante y F hacia atrás y el cursor se mueve a la posición del carácter encontrado.
Los comandos t y T buscan un carácter en la línea actual solamente, pero para t, el cursor se mueve a la posición antes del carácter, y T busca la línea hacia atrás hasta la posición después del carácter.
Comandos Set
Puede cambiar el aspecto de su pantalla de vi utilizando los siguientes comandos :set. Una vez que esté en el modo de comando, escriba :set seguido de cualquiera de los siguientes comandos.
iv.No. | Comando & Descripción |
---|---|
:set ic
Ignora las mayúsculas y minúsculas al buscar |
2 | 3 | 4 |
5 | :set sw
Ajusta el ancho de un tabulador de software. Por ejemplo, se establecería un ancho de desplazamiento de 4 con este comando – :set sw = 4 |
6 | :set ws
Si se establece wrapscan, y la palabra no se encuentra en la parte inferior del archivo, intentará buscarla al principio |
7 | :set wm
Si esta opción tiene un valor mayor que cero, el editor «envolverá la palabra» automáticamente. Por ejemplo, para establecer el margen de ajuste a dos caracteres, se escribiría esto: :set wm = 2 |
8 | |
9 |
:set term Imprime el tipo de terminal |
10 | :set bf
Descarta los caracteres de control de la entrada |
Ejecutar comandos
El vi tiene la capacidad de ejecutar comandos desde el editor. Para ejecutar un comando, sólo tiene que ir al modo de comando y escribir :! comando.
Por ejemplo, si quiere comprobar si un archivo existe antes de intentar guardar su archivo con ese nombre, puede escribir :! ls y verá la salida de ls en la pantalla.
Puede pulsar cualquier tecla (o la secuencia de escape del comando) para volver a su sesión de vi.
Reemplazar texto
El comando de sustitución (:s/) le permite reemplazar rápidamente palabras o grupos de palabras dentro de sus archivos. A continuación se muestra la sintaxis para reemplazar texto –
:s/search/replace/g
La g significa globalmente. El resultado de este comando es que se cambian todas las ocurrencias en la línea del cursor.
Puntos importantes a tener en cuenta
Los siguientes puntos se sumarán a su éxito con vi –
-
Debe estar en modo comando para usar los comandos. (Presione Esc dos veces en cualquier momento para asegurarse de que está en modo comando.)
-
Debe tener cuidado con los comandos. Estos distinguen entre mayúsculas y minúsculas.
-
Debe estar en el modo de inserción para introducir texto.
.