Unix / Linux - Tutorial del editor vi
En este capítulo, entenderemos cómo funciona el editor vi en Unix. Hay muchas formas de editar archivos en Unix. Editar archivos usando el editor de texto orientado a pantallavies una de las mejores formas. 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 VIMtambién está disponible ahora. Aquí, VIM significaVi IMdemostrado.
vi generalmente se considera el estándar de facto en los editores de Unix porque:
Por lo general, está disponible en todos los tipos de sistemas 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 la ex.
Puedes usar el vieditor para editar un archivo existente o crear un nuevo archivo desde cero. También puede utilizar este editor para leer un archivo de texto.
Iniciar el editor vi
La siguiente tabla enumera los comandos básicos para usar el editor vi:
No Señor. | Comando y descripción |
---|---|
1 | vi filename Crea un nuevo archivo si ya no existe; de lo contrario, abre un archivo existente. |
2 | vi -R filename Abre un archivo existente en modo de solo lectura. |
3 | view filename Abre un archivo existente en modo de solo lectura. |
A continuación se muestra un ejemplo para crear un nuevo archivo. testfile si ya no existe en el directorio de trabajo actual -
$vi testfile
El comando anterior generará la siguiente salida:
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
Notarás un 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, tabulación, nueva línea o algún otro carácter no visible presente.
Ahora tiene un archivo abierto para comenzar a trabajar. Antes de continuar, entendamos algunos conceptos importantes.
Modos de operación
Mientras trabajamos con el editor vi, generalmente nos encontramos con los siguientes dos modos:
Command mode- Este modo le permite realizar tareas administrativas como guardar los archivos, ejecutar los comandos, mover el cursor, cortar (tirar) y pegar las líneas o palabras, así como buscar y reemplazar. En este modo, todo lo que escriba se interpreta como un comando.
Insert mode- 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 siempre comienza en el command mode. Para ingresar texto, debe estar en el modo de inserción para lo cual simplemente escribai. Para salir del modo de inserción, presione elEsc , que lo llevará de regreso al modo de comando.
Hint- Si no está seguro en qué modo se encuentra, presione la tecla Esc dos veces; esto lo llevará al modo de comando. Abre un archivo usando el editor vi. Comience escribiendo algunos caracteres y luego pase al modo de comando para comprender la diferencia.
Salir de vi
El comando para salir de vi es :q. Una vez en el modo de comando, escriba dos puntos y 'q', seguido de retorno. Si su archivo ha sido modificado de alguna manera, el editor le advertirá de esto 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 usar:wq y volver.
La forma más fácil de save your changes and exit viestá con el comando ZZ. Cuando esté en el modo de comando, escribaZZ. losZZ El comando funciona de la misma manera que el :wq mando.
Si desea especificar / indicar un nombre en particular para el archivo, puede hacerlo especificándolo después de la :w. Por ejemplo, si desea guardar el archivo en el que está trabajando con otro nombre de archivo llamadofilename2, escribirías :w filename2 y volver.
Moverse dentro de un archivo
Para moverse dentro de un archivo sin afectar su texto, debe estar en el modo de comando (presione Esc dos veces). La siguiente tabla enumera algunos comandos que puede usar para moverse un carácter a la vez:
No Señor. | Comando y descripción |
---|---|
1 | k Mueve el cursor una línea hacia arriba |
2 | j Mueve el cursor una línea hacia abajo |
3 | h Mueve el cursor a la izquierda un carácter |
4 | l Mueve el cursor a la derecha una posición de carácter |
Los siguientes puntos deben tenerse en cuenta para moverse dentro de un archivo:
vi distingue entre mayúsculas y minúsculas. Debe prestar atención a las mayúsculas al usar los comandos.
La mayoría de los comandos en vi pueden estar precedidos por la cantidad de veces que desea que ocurra la acción. Por ejemplo,2j mueve el cursor dos líneas hacia abajo en la ubicación del cursor.
Hay muchas otras formas de moverse dentro de un archivo en vi. Recuerda que debes estar en modo comando (press Esc twice). La siguiente tabla enumera algunos comandos para moverse por el archivo:
No Señor. | Comando y descripción |
---|---|
1 | 0 or | Coloca el cursor al principio de una línea. |
2 | $ Coloca el cursor al final de una línea. |
3 | w Coloca el cursor en la siguiente palabra |
4 | b Coloca el cursor en la palabra anterior. |
5 | ( Coloca el cursor al comienzo de la oración actual |
6 | ) Coloca el cursor al principio de la siguiente oración. |
7 | E Va al final de la palabra delimitada en blanco |
8 | { Mueve un párrafo hacia atrás |
9 | } Avanza un párrafo |
10 | [[ Mueve una sección hacia atrás |
11 | ]] Mueve una sección hacia adelante |
12 | n| Se mueve a la columna n en la línea actual |
13 | 1G Pasa a la primera línea del archivo. |
14 | G Va a la última línea del archivo. |
15 | nG Se mueve al nth línea del archivo |
dieciséis | :n Se mueve al nth línea del archivo |
17 | fc Avanza a c |
18 | Fc Vuelve a c |
19 | H Se mueve a la parte superior de la pantalla. |
20 | nH Se mueve al nth línea desde la parte superior de la pantalla |
21 | M Se mueve al centro de la pantalla. |
22 | L Mover a la parte inferior de la pantalla |
23 | nL Se mueve al nth línea desde la parte inferior de la pantalla |
24 | :x Los dos puntos seguidos de un número colocarían el cursor en el número de línea representado por x |
Comandos de control
Los siguientes comandos se pueden utilizar con la tecla de control para realizar las funciones que se indican en la siguiente tabla:
No Señor. | Comando y descripción |
---|---|
1 | CTRL+d Avanza 1/2 pantalla |
2 | CTRL+f Avanza una pantalla completa |
3 | CTRL+u Se mueve hacia atrás 1/2 pantalla |
4 | CTRL+b Retrocede una pantalla completa |
5 | CTRL+e Mueve la pantalla una línea hacia arriba |
6 | CTRL+y Mueve la pantalla una línea hacia abajo |
7 | CTRL+u Mueve la pantalla 1/2 página hacia arriba |
8 | CTRL+d Mueve la pantalla 1/2 página hacia abajo |
9 | CTRL+b Mueve la pantalla una página hacia arriba |
10 | CTRL+f Mueve la pantalla una página hacia abajo |
11 | CTRL+I Vuelve a dibujar la pantalla |
Editar archivos
Para editar el archivo, debe estar en el modo de inserción. Hay muchas formas de ingresar al modo de inserción desde el modo de comando:
No Señor. | Comando y 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 ubicació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 debajo de la ubicación del cursor |
6 | O Crea una nueva línea para la entrada de texto sobre la ubicación del cursor |
Eliminar personajes
Aquí hay una lista de comandos importantes, que se pueden usar para eliminar caracteres y líneas en un archivo abierto:
No Señor. | Comando y descripción |
---|---|
1 | x Elimina el carácter debajo de la ubicación del cursor |
2 | X Elimina el carácter antes de la ubicación del cursor. |
3 | dw Elimina de la ubicación actual del cursor a la siguiente palabra |
4 | d^ Elimina desde la posición actual del cursor hasta el principio de la línea |
5 | d$ Elimina desde la posición actual del cursor hasta el final de la línea |
6 | D Elimina desde la posición del cursor hasta el final de la línea actual |
7 | dd Elimina la línea en la que está el cursor |
Como se mencionó anteriormente, la mayoría de los comandos en vi pueden ir precedidos por la cantidad de veces que desea que ocurra la acción. Por ejemplo,2x elimina dos caracteres debajo de la ubicación del cursor y 2dd elimina dos líneas en las que se encuentra el cursor.
Se recomienda que practique los comandos antes de continuar.
Cambiar comandos
También tiene la capacidad de cambiar caracteres, palabras o líneas en vi sin eliminarlos. Aquí están los comandos relevantes:
No Señor. | Comando y descripción |
---|---|
1 | cc Elimina el contenido de la línea, dejándolo en modo de inserción. |
2 | cw Cambia la palabra en la que se encuentra el cursor del cursor a minúscula w fin de la palabra. |
3 | r Reemplaza el carácter debajo del cursor. vi vuelve al modo de comando después de ingresar el reemplazo. |
4 | R Sobrescribe varios caracteres que comienzan con el carácter que se encuentra actualmente debajo del cursor. Debes usarEsc para detener la sobrescritura. |
5 | s Reemplaza el carácter actual con el carácter que escribe. Posteriormente, queda en el modo de inserción. |
6 | S Elimina la línea en la que se encuentra el cursor y la reemplaza con el nuevo texto. Después de ingresar el nuevo texto, vi permanece en el modo de inserción. |
Copiar y pegar comandos
Puede copiar líneas o palabras de un lugar y luego puede pegarlas en otro lugar usando los siguientes comandos:
No Señor. | Comando y descripción |
---|---|
1 | yy Copia la línea actual. |
2 | yw Copia la palabra actual desde el carácter en el que se encuentra el cursor w minúscula, hasta el final de la palabra. |
3 | p Coloca el texto copiado después del cursor. |
4 | P Coloca el texto tirado antes del cursor. |
Comandos avanzados
Hay algunos comandos avanzados que simplifican la edición diaria y permiten un uso más eficiente de vi -
No Señor. | Comando y descripción |
---|---|
1 | J Une la línea actual con la siguiente. Un recuento de j comandos une muchas líneas. |
2 | << Desplaza la línea actual hacia la izquierda en un ancho de turno. |
3 | >> Desplaza la línea actual hacia la derecha en un ancho de turno. |
4 | ~ Cambia el caso del carácter debajo del cursor. |
5 | ^G Presione las teclas Ctrl y G al mismo tiempo para mostrar el nombre del archivo actual y el estado. |
6 | U Restaura la línea actual al estado en el que estaba antes de que el cursor entrara en la línea. |
7 | u Esto ayuda a deshacer el último cambio que se hizo en el archivo. Si escribe "u" de nuevo, se volverá a realizar el cambio. |
8 | J Une la línea actual con la siguiente. Un recuento se suma a tantas líneas. |
9 | :f Muestra la posición actual en el archivo en% y el nombre del archivo, el número total de archivos. |
10 | :f filename Cambia el nombre del archivo actual a nombre de archivo. |
11 | :w filename Escribe en el archivo nombre de archivo. |
12 | :e filename Abre otro archivo con nombre de archivo. |
13 | :cd dirname Cambia el directorio de trabajo actual a dirname. |
14 | :e # Alterna entre dos archivos abiertos. |
15 | :n En caso de que abra varios archivos usando vi, use :n para ir al siguiente archivo de la serie. |
dieciséis | :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 que abra varios archivos usando vi, use :N para ir al archivo anterior de la serie. |
18 | :r file Lee el archivo y lo inserta después de la línea actual. |
19 | :nr file 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úsquedas: string y character. Para una búsqueda de cadenas, el/ y ?se utilizan comandos. Cuando inicie estos comandos, el comando que acaba de escribir se mostrará en la última línea de la pantalla, donde escribe la cadena en particular que debe buscar.
Estos dos comandos difieren solo en la dirección donde se realiza la búsqueda:
los / El comando busca hacia adelante (hacia abajo) en el archivo.
los ? El comando busca hacia atrás (hacia arriba) en el archivo.
los n y NLos comandos repiten el comando de búsqueda anterior en la misma dirección o en la opuesta, respectivamente. Algunos personajes tienen significados especiales. Estos caracteres deben ir precedidos de una barra invertida (\) para incluirlo como parte de la expresión de búsqueda.
No Señor. | Descripción del personaje |
---|---|
1 | ^ Busca al principio de la línea (utilizar al principio de una expresión de búsqueda). |
2 | . Coincide con un solo carácter. |
3 | * Coincide con cero o más del carácter anterior. |
4 | $ Fin de la línea (Úselo al final de la expresión de búsqueda). |
5 | [ Inicia un conjunto de expresiones coincidentes o no coincidentes. |
6 | < Esto se pone en una expresión escapada con la barra invertida para encontrar el final o el comienzo de una palabra. |
7 | > Esto ayuda a ver el '<'descripción del personaje arriba. |
La búsqueda de caracteres busca dentro de una línea para encontrar un carácter ingresado después del comando. losf y F Los comandos buscan un carácter en la línea actual solamente. f busca hacia adelante y F busca hacia atrás y el cursor se mueve a la posición del carácter encontrado.
los t y T Los comandos 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 a la posición después del carácter.
Establecer comandos
Puede cambiar la apariencia de su pantalla vi usando lo siguiente :setcomandos. Una vez que esté en el modo de comando, escriba:set seguido de cualquiera de los siguientes comandos.
No Señor. | Comando y descripción |
---|---|
1 | :set ic Ignora el caso al buscar |
2 | :set ai Establece sangría automática |
3 | :set noai Elimina la sangría automática |
4 | :set nu Muestra líneas con números de línea en el lado izquierdo |
5 | :set sw Establece el ancho de una pestaña de software. Por ejemplo, establecería un ancho de turno de 4 con este comando::set sw = 4 |
6 | :set ws Si Wrapscan está configurado y la palabra no se encuentra al final del archivo, intentará buscarla al principio. |
7 | :set wm Si esta opción tiene un valor mayor que cero, el editor automáticamente "ajustará la palabra". Por ejemplo, para establecer el margen de ajuste en dos caracteres, debe escribir esto::set wm = 2 |
8 | :set ro Cambia el tipo de archivo a "solo lectura" |
9 | :set term Imprime el tipo de terminal |
10 | :set bf Descarta los caracteres de control de la entrada |
Ejecución de comandos
El vi tiene la capacidad de ejecutar comandos desde dentro del editor. Para ejecutar un comando, solo necesita ir al modo de comando y escribir:! mando.
Por ejemplo, si desea comprobar si existe un archivo antes de intentar guardar su archivo con ese nombre de archivo, puede escribir :! ls y verá la salida de ls en la pantalla.
Puede presionar cualquier tecla (o la secuencia de escape del comando) para regresar a su sesión de vi.
Reemplazo de 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 el texto:
:s/search/replace/g
los grepresenta 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 de comando).
Debes tener cuidado con los comandos. Éstos distinguen entre mayúsculas y minúsculas.
Debe estar en modo insertar para ingresar texto.