Uno de los retos que enfrentan los nuevos usuarios de Linux que acceden por consola, es la edición de textos a través de las opciones disponibles en la mayoría de estos entornos. Operaciones tan importantes como la escritura de scripts, desarrollo de código fuente en distintos lenguajes de programación o edición de archivos de configuración del sistema (como iptables
para el firewall, o el archivo sudoers
) requieren un conocimiento sólido de la edición de texto en Linux. La mayor parte del tiempo accedemos a nuestros sistemas vía SSH, por lo tanto, al estar bajo una interfaz de línea de comandos, los editores de texto no ofrecen una forma intuitiva o una interfaz gráfica de trabajo. En esta guía presentamos información práctica para aprender a trabajar con los editores de texto más populares (o nativos) en la mayoría de los sistemas operativos basados en Linux: vi y nano; además se hace mención a otros editores como emacs
y vim
.
Vi o Visual, es uno de los editores de texto más comunes en los sistemas Linux, está presente en la mayoría de estos entornos y puede ser bastante complejo de usar al principio. Una vez que se adecúe a los modos y comandos, puede que
vi
le parezca una opción completa y muy eficiente.
Para editar un archivo usando el editor vi
simplemente debe ingresar el comando:
vi nombredelarchivo.txt
Una vez ejecutado el comando, se abrirá el archivo correspondiente en texto plano, sin formato alguno. Si este no existe, se creará un archivo en blanco, el cual se guardará en el directorio desde donde se ejecutó el comando, siempre y cuando lo guarde al terminar la edición. vi
utiliza tres modos para operar y editar archivos: modo comando, modo de inserción y modo última línea. ¡No se apresure a escribir texto inmediatamente, ya que puede cometer errores!
Modo comando: cuando ejecuta vi
, el programa se inicia por defecto en este modo.
Cada tecla ejecuta una acción que permite la edición de los archivos.
Los comandos de este modo están compuestos de una o dos (2) teclas.
Para regresar al modo comando presione ESC.
Modo de inserción - o edición: el modo de inserción, permite escribir y borrar texto dentro del archivo.
Para entrar al modo de inserción, presione la tecla i mientras está en el modo de comandos.
Podrá identificar que efectivamente está en el modo de inserción si observa el siguiente aviso en la parte inferior de su shell: -- INSERT --.
¡Recuerde! Para salir del modo de inserción, presione ESC.
Modo última línea: este modo permite ejecutar comandos externos, tales como guardar el archivo, salir y otras operaciones más complejas.
Para entrar en el modo última línea pulse la tecla :.
Podrá ver estos comandos en la última línea de la pantalla.
A diferencia del primer modo, la ejecución de estos comandos es realizada al presionar Enter.
Para salir de este modo, presione Esc.
A continuación se presenta una lista de los comandos más utilizados en vi, recuerde que los comandos precedidos por :
pertenecen al modo última línea y debe presionar Enter para ejecutarlos. Tenga en cuenta que vi
distingue entre mayúsculas y minúsculas.
ComandoFunciónvi ejemplo
Ya lo hemos visto: este comando inicia el editor vi para el archivo ejemplovi -r ejemplo
Inicia vi en modo de recuperación para editar el archivo ejemplo después de un fallo del sistema:r ejemplo2
Leer en el archivo ejemplo2
e insertar ese texto desde la posición actual de nuestro primer archivoESC
Salir del modo actual y regresar al modo de comando:w
Guardar el archivo:q
Salir del editor:wq
o :x
En consecuencia, guardar y salir. Note que puede combinar teclas para obtener otras funciones en el modo última línea:q!
Salir de vi
sin guardar cambios:w ejemplo
Guardar cambios en el archivo ejemplo:w ejemplo2
Sobrescribir el archivo ejemplo2i
Insertar texto a la izquierda del cursora
Insertar texto a la derecha del cursorA
Insertar texto al final de la línea actualr
Remplazar el carácter en la línea actualx
Borrar carácter en la posición actualdw
Borrar la palabra en la posición actualdd
Borrar la línea actualu
Deshacer la última operaciónyy
Copiar la línea actual y ponerla en búferp
Pegar el contenido del búfer en la posición actual:n
o :nG
Mover el cursor hasta la línea n
, muy útil en archivos de gran extensión. Por ejemplo :5100
movería el cursor a la línea 5100 dentro del archivo/patrón
Buscar patrón
en el archivo, desde la posición actual hacia adelante?patrón
Buscar patrón
en el archivo, desde la posición actual hacia atrás
ComandoFunciónTeclas de flecha: ←
, →
, ↑
y ↓
Para mover el cursor a la izquierda, derecha, arriba o abajoj
Mover el cursor a la siguiente líneak
Mover a la línea anteriorh
o tecla retroceso (Back space
)Moverse un carácter a la izquierdal
o tecla espacio (Space
)Moverse un carácter a la derecha0
Ir al inicio de la línea$
Ir al final de la líneaw
Ir al principio de la siguiente palabra:0
Mueve el cursor al inicio del archivo:n
Se mueve a la línea n:$
Se mueve a la última línea del archivo
Arriba se presentan los modos y comandos básicos para comenzar con la edición de archivos usando vi
, sin embargo, este programa provee muchas características avanzadas que no son abordadas con detalle en este tutorial. Por ejemplo: la combinación :!
ejecuta un comando de Linux dentro del editor vi. Por ejemplo, si ejecuta :! wc %
se mostrará el número de palabras en su archivo, la sesión de vi
pasa a segundo plano y se muestra el resultado en su shell. Para continuar trabajando en su archivo, debe presionar Enter.
Nano es un editor de texto más básico, y cuyo uso es mucho más sencillo. Es el editor de texto nativo en sistemas como Ubuntu y es una alternativa a editores como
emacs
ovi
ya que opera más fácilmente y provee mayor interactividad.
Nano está presente por defecto en la mayoría de los sistemas basados en Linux, pero si este no es su caso, puede instalarlo ingresando:
apt-get install nano
Para sistemas Debian/Ubuntu.
yum install nano
Para usuarios que utilizan sistemas Fedora/CentOS.
Para editar un archivo usando el editor nano
use:
nano ArchivoTest.txt
Al ejecutar el comando, se abrirá una interfaz ligeramente más completa que la de vi
:
Si el archivo al cual hizo referencia no existe, se creará un archivo en blanco, que quedará guardado independiente de lo que haga en el editor, a diferencia de vi
. En la parte inferior del texto encontrará, a modo de referencia, los comandos básicos de nano
. El símbolo ^
representa la tecla CTRL; así, si presionamos CTRL + X estaríamos saliendo de nano
.
Podrá notar que puede mover el cursor libremente e insertar texto sin necesidad de usar distintos modos,
¡muy conveniente!
Muchos de los comandos son interactivos, por lo tanto, al presionar los "atajos" en el teclado, nano
puede solicitar información adicional.
ComandoFunciónCTRL
+ G
Mostrar la pantalla de ayudaCTRL
+ O
Guardar cambiosCTRL
+ X
Salir de nano
. Al ejecutar este "atajo", nano le preguntará si desea o no guardar los cambios en su archivo, otra opción muy útil. Presione Y
para guardar los cambios (Yes), N
para descartarlos (No), o CTRL
+ C
para cancelar la operaciónCTRL
+ R
Inserta el contenido de otro archivo desde la posición actual, es un comando interactivo, por lo que se le solicitará colocar nombre y/o ruta del archivo cuyo contenido desea copiarCTRL
+ W
Busca la cadena de caracteres y sitúa el cursor en la coincidenciaCTRL
+ \
Buscar y remplazarCTRL
+ /
Ir a la línea, columnaCTRL
+ Y
Ir a la página siguienteCTRL
+ V
Ir a la página anteriorCTRL
+ K
Cortar el texto de la línea actualCTRL
+ U
Pegar el texto desde la ubicación actual del cursor
Para abrir un archivo en nano
desde una línea y columna específica use:
nano +LÍNEA,COLUMNA ejemplo.txt
Para abrir un archivo en modo de solo lectura:
nano -v ejemplo.txt
Para abrir un archivo de configuración del sistema utilice la opción -w
, esto evita que las líneas muy largas se ajusten al tamaño del shell, lo que produce problemas de visualización y eventualmente, errores en la edición:
nano -w ejemplo.txt
A diferencia de vi
, emacs es un editor en pantalla, por lo que puede desplazarse y escribir texto con más libertad. Sin embargo, el uso de los comandos puede ser incluso más confuso que en vi
. Para editar un archivo usando emacs
ejecute:
emacs ejemplo.txt
A continuación una lista muy resumida de los comandos más básicos de emacs
.
ComandoFunciónCTRL
+x
y luego CTRL
+c
Salir de emacs
(se le preguntará si desea guardar el archivo)CTRL
+ x
y luego CTRL
+ s
Guardar sin salirCTRL
+h
y luego t
Ver tutorial de emacsESC
+d
Borrar la palabra donde está el cursor actualmenteCTRL
+k
Borrar la línea actualCTRL
+s
Buscar una palabra o cadena de caracteres (hacia adelante)CTRL
+x
y luego u
Deshacer el último cambio
Vim
es la versión mejorada de vi
, por lo tanto, todos los comandos que utilice en vi
serán válidos para vim
. Algunas de las características adicionales que incluye vim
:
Soporte para lenguajes de programación como C/C++, Python, Perl o Shell. Esto permite, por ejemplo, resaltar secciones de código adecuadamente para mayor legibilidad;
Incluye opción multinivel para deshacer/rehacer;
Permite la edición de archivos comprimidos (.gzip, .zip, .tar, etc).
Existen otras opciones que puede utilizar, pero que no se abordan dentro de este tutorial. Nuestra recomendación es explorar con cada uno de los editores y seleccionar el que sea más cómo para usted. Si usted es principiante en Linux, le recomendamos crear un archivo de prueba desde su directorio /home
y experimentar con los comandos antes de hacer cambios más importantes. Recuerde que para editar archivos de configuración de sistema y afines, deberá poseer privilegios root.
El recurso más completo estará a su alcance ejecutando los comandos de ayuda o manuales de cada editor. También puede consultar los siguientes recursos en busca de información adicional con respecto a este tema. Aunque este material es provisto esperando que sea útil, tenga en cuenta que no podemos certificar la actualidad o precisión de los contenidos externos.
Juego educativo oficial de vim
: Vim adventures, que explica de forma muy interactiva, cómo usar este editor.
Artículo de Linux que explica el uso de comandos externos en vi.