Cómo editar archivos en Linux usando vi

  1. Ordenadores
  2. Sistemas Operativos
  3. Linux
  4. Cómo editar archivos en Linux usando vi

Libro Relacionado

Por Emmett Dulaney

Si tienes la oportunidad de jugar con ed en Linux, descubrirás que vi es un sueño hecho realidad, aunque siga siendo un editor de línea de comandos. En Linux, el editor vi es un editor de texto de pantalla completa, por lo que puede ver varias líneas al mismo tiempo. La mayoría de los sistemas Unix, incluyendo Linux, vienen con vi. Por lo tanto, si conoce las características básicas de vi, puede editar archivos de texto en casi cualquier sistema basado en Unix.

Cuando vi edita un archivo, lee el archivo en un búfer – un bloque de memoria – para que pueda cambiar el texto en el búfer. El editor vi también utiliza archivos temporales durante la edición, pero el archivo original no se altera hasta que se guardan los cambios.

Para iniciar el editor en un sistema Linux, escriba vi seguido del nombre del archivo que desea editar, así:

vi /etc/fstab

El editor vi carga el archivo en la memoria, muestra las primeras líneas en una pantalla de texto y posiciona el cursor en la primera línea.

La última línea muestra la ruta de acceso del archivo, así como el número de líneas (2) y el número de caracteres (59) en el archivo. En este caso, el texto[sólo lectura] aparece después del nombre de archivo porque el archivo /etc/fstab se abre mientras el usuario está conectado como un usuario normal (lo que significa que esta persona no tiene permiso para modificar el archivo). Más tarde, la última línea de la pantalla vi funciona como un área de entrada de comandos. El resto de las líneas muestran el archivo. Si el archivo contiene menos líneas que la pantalla, vi muestra las líneas vacías con una inclinación (~) en la primera columna.

La línea actual está marcada por el cursor, que aparece como un pequeño rectángulo negro. El cursor aparece en la parte superior de un carácter.

Cuando se usa vi, se trabaja en uno de los tres modos en Linux:

  • Modo de comando visual: Este modo es el predeterminado. En este modo, cualquier cosa que escriba se interpreta como un comando que se aplica a la línea que contiene el cursor. Los comandos vi son similares a los comandos ed.
  • Modo de comando de dos puntos: Este modo se utiliza para leer o escribir archivos, configurar las opciones vi y salir de vi. Todos los comandos de dos puntos comienzan con dos puntos (:). Cuando escribe los dos puntos, vi posiciona el cursor en la última línea y espera a que escriba un comando. El comando surte efecto cuando se pulsa Intro.
  • Modo de entrada de texto: Este modo es para escribir texto. Puede entrar en el modo de entrada de texto con los comandos a (insertar después del cursor), A (añadir al final de la línea), o (abrir una línea por debajo de la actual), O (abrir una línea por encima de la actual), o i (insertar después del cursor). Después de introducir líneas de texto, debe pulsar Esc para salir del modo de entrada de texto y volver a entrar en el modo de comando visual.

Un problema con todos estos modos es que no se puede decir fácilmente el modo actual en el que se encuentra vi. Puedes empezar a escribir sólo para darte cuenta de que vi no está en modo de entrada de texto, lo que puede ser frustrante.

Si desea asegurarse de que vi está en modo de comando, pulse Esc varias veces. (Presionar Esc más de una vez no hace daño.)

Para ver la ayuda en línea en vi, escriba :help mientras está en modo de comando de dos puntos. Cuando termine con la ayuda, escriba :q para salir de la pantalla de Ayuda y volver al archivo que está editando.

El editor vi posiciona inicialmente el cursor en el primer carácter de la primera línea, y una de las cosas más prácticas que puedes saber es cómo mover el cursor. Para tener un poco de práctica, pruebe el siguiente comando.

Cursor Movement Commands en viKeyMoves la línea Cursor↓One línea down↑One línea up←One carácter al carácter left→One a la derechaWOne palabra forwardBOne palabra backwardCtrl+DHalf una pantalla downCtrl+UHalf una pantalla

upPuede ir a un número de línea específico en cualquier momento utilizando el práctico comando dos puntos. Para ir a la línea 6, por ejemplo, escriba lo siguiente y luego pulse Intro:

:6

Al escribir los dos puntos, vi muestra los dos puntos en la última línea de la pantalla.

A partir de ese momento, vi utilizará cualquier texto que escriba como comando. Debe presionar Enter para enviar el comando a vi. En el modo de comandos de dos puntos, vi acepta todos los comandos que el editor ed acepta, y luego algunos.

Para buscar una cadena, primero escriba una barra oblicua (/). El editor vi muestra la barra en la última línea de la pantalla. Escriba la cadena de búsqueda y pulse Intro. El editor vi localiza la cadena y posiciona el cursor al principio de la misma. Para localizar el cdrom de la cadena en el fichero /etc/fstab, escriba

/cdrom

Para borrar la línea que contiene el cursor, escriba dd. El editor vi borra esa línea de texto y hace que la siguiente línea sea la actual.

Para empezar a introducir texto delante del cursor, escriba i. El editor vi cambia al modo de entrada de texto. Ahora puede introducir texto. Cuando termine de introducir texto, pulse Esc para volver al modo de comando visual.

Después de terminar de editar el archivo, puede guardar los cambios en el archivo con el comando :w. Para salir del editor sin guardar ningún cambio, use el comando :q! Si desea guardar los cambios y salir, puede usar el comando :wq para realizar ambos pasos al mismo tiempo. El editor vi guarda los cambios en el archivo y sale. También puede guardar los cambios y salir del editor pulsando Shift+ZZZ (es decir, mantener pulsado Shift y pulsar Z dos veces).

vi acepta un gran número de comandos además de los comandos recién mencionados. La siguiente tabla muestra algunos de los comandos vi más utilizados, organizados por tareas.

Common vi CommandsCommandDespliega el siguiente textoInsert textaInserts texto después del cursorAInserts texto al final de la línea actualIInserts texto al principio de la línea actualInserts texto antes del cursorDelete textDelete textDeletes hasta el final de la línea actualDelete textDelete the current linedGDeletes desde la línea actual hasta el final del archivowDelete the current word where the cursor presently residesxDelete the character on which the cursor repostsChange textCChanges up to the end of the current lineccChange the current lineJJJJoins the current line with the next onerxReplaces the character under el cursor con x (donde x es cualquier carácter) Mover el cursorh o ←Moves un carácter a la izquierdaj o ↓Moves una línea abajo o ↑Moves una línea arribaLMoves al final de la pantalla o →Moves un carácter a la derechawMoves al principio de la siguiente palabrabMoves al principio de la línea anterior wordScroll textCtrl+DScrolls forward by half a screenCtrl+UScrolls backward by half a screenRefresh screenCtrl+LRedibuja la línea actual de screenCut y pega textyyYanks (copias) a un buffer sin nombrePone la línea yanqui por encima de la línea actual Pone la línea yanqui por debajo de los comandos de lineColon actuales:!Ejecuta un comando shell:qQuits the editor:q!Quits without saving changes:r filenameReads the file and inserts it after the current line:w filenameWrites a buffer to the file:wqSaves changes and exitsSearches text/stringSearches forward for a string?stringBuscadores hacia atrás para una cadenaMiscellaneousuDeshace el último comandoDeshace el último comandoDeshace el modo de entrada y entra en el modo de comando visualUUndoes cambios recientes en la línea actual

?>