cabecera d-xl

Comandos en Linux: Editores de texto


En el mundo del software libre suele haber una gran cantidad de alternativas para cada tipo de aplicación, y los Editores de texto no son una excepción.

Históricamente, el editor clásico de todos los sistemas Unix es el VI. El VI viene por defecto en todos los sistemas Unix.
Sin embargo, tiene una filosofía distinta a la de editores como el Bloc de Notas, y por tanto las versiones originales no suelen ser muy amigables para el usuario. Existen clones de este programa que incluyen nuevas funcionalidades. De todos ellos, el más extendido es el VIM (VI iMproved), el cual suele venir por defecto en la mayoría de distribuciones de Linux. Existe una versión gráfica llamada gvim.
No obstante, no es del agrado de muchas personas, y el editor emacs también es utilizado ampliamente. emacs no es tan estándar como lo es VI, por lo que probablemente tendrás que instalarlo por separado. Ambos editores pueden instalarse bajo otros sistemas operativos; si aprendes su manejo podrás utilizarlos en Windows o en otros sistemas Unix.
Este curso ha sido creado con VIM y emacs.

VI & VIM

VI es un editor de texto visual, de pantalla completa y en modo texto. Está basado en el clásico editor de Unix ex. Como se ha mencionado anteriormente, a primera vista es poco intuitivo y no suele ser del agrado de aquellos que dan sus primeros pasos en Linux, pero por otra parte es muy apreciado por los usuarios avanzados, administradores de sistemas y programadores.
Es además un editor muy potente, que permite hacer complicadas operaciones en grandes ficheros con muy pocos comandos, por lo que su aprendizaje puede ahorrarnos mucho tiempo. Otra de las ventajas que tiene es que suele encontrarse hasta en los disquetes de rescate, así que resulta conveniente conocerlo para poder manejarse en situaciones de emergencia.
No obstante, la versión clásica de VI es difícil de manejar y poco amigable con el usuario. Por ejemplo, no podemos movernos con los cursores por el texto, debemos pasar al denominado modo comando y utilizar letras para movernos. El VIM, como ya hemos dicho, es un clon muy mejorado del VI. Incluye coloreado de sintaxis para casi todos los lenguajes de programación existentes y ficheros de configuración de Linux/Unix.
El editor VI es un editor de pantalla completa que visualiza una pantalla de texto cada vez. Cuando te desplazas a una nueva parte del fichero que estás editando, VI redibuja la pantalla de forma que la línea actual esté siempre en pantalla. Sin embargo, VI no es un procesador de textos o un sistema de composición: no formatea texto ni permite integrar gráficos. Por otra parte, VI es independiente del terminal, de modo que puedes utilizarlo igualmente sobre la consola, sobre una ventana de terminal en las X, o en una sesión remota en otra máquina.
VI tiene dos modos de operación (en contraste, como veremos luego, emacs no tiene modos):

  • Modo comando o automático: es el modo en que se está tras arrancar el editor. En este modo no podemos insertar texto, únicamente podemos escribir comandos.
  • Modo inserción: permite la inserción o el borrado de texto.

Hay ciertos comandos que empiezan por el carácter : (dos puntos). Cuando tecleamos dos puntos, el cursor se situará en la zona inferior de la pantalla, como se muestra en la imagen. Estos comandos se ejecutan pulsando INTRO
Una vez en esa zona, pulsando la tecla TABULADOR se autocompletarán los comandos que comiencen por aquello. En el ejemplo de la imagen anterior, pulsando tabulador VIM ofrecería todos los comandos que empezaran por 'w'.

Estas son las teclas básicas de funcionamiento del VIM. Algunas valen también para el paginador less:

  • i - Comienza a insertar texto en la posición actual del cursor
  • a - Comienza a insertar texto en la posición siguiente a la del cursor
  • o - Comienza a insertar texto en una nueva línea debajo del cursor
  • s - Borra el carácter en la posición del cursor y comienza a insertar texto
  • :q! - Sale sin guardar los cambios
  • :wq - Sale guardando los cambios
  • /cadena - Busca 'cadena' hacia delante
  • n - Repite la última búsqueda hacia delante
  • N - Repite la última búsqueda hacia atrás
  • nG - Se desplaza a la enésima línea del fichero (ej: 13G
  • dd - Borra la línea actual
  • D - Borra desde donde está el cursor hasta el final de línea
  • yy - Copia una línea al buffer
  • p - Pega la línea del buffer debajo del cursor y pasa a modo inserción
  • u - Deshace la última operación

Como hemos mencionado anteriormente, el VI permite realizar operaciones muy complejas, entre las cuales se encuentran "buscar y reemplazar" mediante expresiones regulares, selección de texto en modo visual, etc. La mejor forma de consolidar el manejo de VIM es usar el tutorial, que se arranca tecleando en una consola vimtutor.

Emacs & XEmacs

Emacs ha sido también uno de los primeros Editores de texto para Unix. A pesar de que visualmente presenta una interfaz similar a un editor de texto normal y corriente como podría ser el edit de MS-DOS, lo cierto es que tiene muchísimas posibilidades que no atribuirías a un editor de texto para consola. Por ejemplo, el sangrado (indent) automático de código Pascal, Java, C o cualquier otro lenguaje para el que haya escrito un módulo para Emacs de asistencia a la programación. También tiene módulos de soporte para escribir LaTeX o XML, e incorpora un psicólogo para los malos momentos.
Emacs además nos ofrece posibilidades de trabajar con CVS, enviar correo electrónico, leer las news, etc. Como nota curiosa, hay que comentar que el manual de emacs en formato ASCII ocupa cerca de 1,1 Mb
Hasta hace unos años emacs no tenía interfaz en X-Window. Por esta razón surgió el proyecto XEmacs (emacs bajo X), que facilitaba el acceso con el ratón a algunas opciones distribuidas en menús. Posteriormente el proyecto Emacs incorporó también esas características. Ambas versiones de Emacs funcionan de modo muy similar.
Emacs es además famoso por sus cientos de combinaciones de teclas, muchas de las cuales requieren 3 o más pulsaciones seguidas. La mayoría de las funciones tienen una combinación de teclas asociada. Además, la configuración está escrita en un lenguaje de programación llamado Common Lisp, lo que permite personalizar prácticamente todas las opciones al vuelo (sin necesidad de rearrancarlo).

La tecla F10 nos da acceso a todos los menús de emacs: fichero, edición, opciones, cambio entre las distintas ventanas de edición de texto (llamadas buffers). Emacs permite partir la pantalla entre los diferentes buffers. Se pasa de uno a otro pulsando Ctrl-x o

Al editar un fichero, por ejemplo, código fuente en C, verás que Emacs hace retroceder momentáneamente el cursor al cerrar paréntesis y corchetes, para indicarnos dónde los abrimos y tener una referencia de cuáles quedan aún por cerrar.

Programación de shell-scripts

El primer intérprete de comandos de los sistemas Unix fue el sh (por shell), también llamada Bourne Shell en mención a su autor. Después aparecieron otros como:

  • ksh (Korn Shell).
  • csh (C Shell).
  • bash (Bourne Again Shell).

De todas las shells, hoy en día las más extendida es, sin lugar a dudas, bash, y es la que traen por defecto casi todas las distribuciones de Linux. Aún así, todas ellas presentan una enorme potencia, aún más si las comparamos con el command.com o cmd.exe de Windows

Esto es normal si tenemos en cuenta que por las consolas de Unix han pasado millones de profesionales y administradores de sistemas que con sus comentarios, sugerencias y aportaciones han contribuído a que poco a poco los intérpretes de comandos hayan ido ganando en potencia a lo largo de los años.
Un shell script (la traducción al castellano es guión de caparazón) no es más que un fichero de texto en el que se incluyen órdenes que serán ejecutadas una detrás de otra (se sigue el guión) por el intérprete de comandos, de igual manera que si las ejecutáramos de manera interactiva. Es parecido a los ficheros BAT o de proceso por lotes de Windows, con la diferencia de que en Unix/Linux, los scripts son lenguajes de programación completos y por tanto disponen de estructuras de control, iteración y selección, funciones, etc.

Acceso a datos de MS-DOS / Comandos

Los comandos más importantes son:

  • mattrib [-a|+a] fichero-MSDOS [ficheros-MSDOS...]
  • mcd [directorio-MSDOS]
  • mcopy [-tnvm] fichero-fuente fichero-destino
  • mcopy [-tnvm] ficheros-fuente directorio-destino
  • mdel [-v] fichero-MSDOS [ficheros-MSDOS...]
  • mdir [-w] directorio-MSDOS
  • mformat [-t pistas] drive:
  • mlabel [-v] drive:
  • mmd [-v] directorio-MSDOS [directorios-MSDOS...]
  • mrd directorio-MSDOS [directorios-MSDOS...]
  • mread [-tnm] fichero-MSDOS fichero-Unix
  • mread [-tnm] ficheros-MSDOS directorio-Unix
  • mren [-v] fichero-fuente fichero-destino
  • mtype [-ts] fichero-MSDOS [ficheros-MSDOS]
  • mwrite [-tnvm] fichero-Unix fichero-MSDOS
  • mwrite [-tnvm] ficheros-Unix directorio-MSDOS

Contacto