UP | HOME

Editores de programación clásicos: Emacs y Vi

Table of Contents

Existen editores de programación e IDEs que usamos para escribir el código fuente. Dentro de los editores de programación hay dos que son muy populares porque su desarrollo comenzó en los años 70 del siglo pasado y, todavía hoy, siguen siendo mantenidos y utilizados.

En este apartado vamos a pasar a estudiarlos por encima ya que, en general, su conocimiento y dominio es importante porque, al menos en el caso de Vi, es el editor instalado por defecto en servidores de Linux.

Vamos a empezar por Emacs y terminaremos con Vi.

Hay otros editores clásicos como Nano, pero nos vamos a centrar en Emacs y Vi.

Tango GNU Emacs como Vi son editores que se caracterizan por ser altamente extensibles y con una curva de aprendizaje (muy) alta.

GNU Emacs

GNU Emacs, o simplemente Emacs, es muchos más que un editor de textos o de programación pero, nosotros aquí, nos vamos a centrar en su uso como editor de programación.

gnu_emacs.png

Figure 1: GNU Emacs

Partes básicas en Emacs

Para poder usar Emacs es necesario conocer las denominaciones que se le da a las diferentes partes que componen el entorno de Emacs:

gnu_emacs_partes_sombreadas.png

Figure 2: Partes básicas

Ves que:

  • A la ventana se le denomina Frame
  • Puedes tener abiertas varias ventanas o Window en un mismo Frame
  • Al contenido que se tiene abierto en cada Window se le denomina Buffer
  • Cada Window tiene su propio Modeline con información sobre el Buffer abierto en dicho Window

El minibuffer

Algunas acciones en Emacs requieren interacción por parte del. En estos casos, Emacs habilita un Minibuffer en la parte de abajo.

Por ejemplo, en la siguiente captura se ejecutado la acción de abrir un fichero y se necesita que el usuario introduzca la ruta de dicho fichero:

gnu_emacs_minibuffer.png

Figure 3: Minibuffer

Formato de los atajos

Aunque se puede usar el menú como en cualquier otro editor para las acciones habituales: abrir, guardar, copiar, etc, en este tipo de editores la ventaja radica en usar los atajos (o macros) para llevar a cabo todas las acciones. De ahí que la curva de aprendizaje de estos editores sea tan alto.

Antes tengo que explicarte el significado de las acciones que te voy a dar a lo largo de este apartado. Para empezar tienes que conocer tres teclas que se usan para los diferentes atajos:

  • La tecla Ctrl es la tecla Control que tienes debajo a la izquierda de un teclado ISO
  • La tecla Shift es la tecla que tienes arriba de la tecla Control y debajo de la tecla Bloq Mayus en un teclado ISO
  • La tecla Super es la tecla que, normalmente, tiene el logotipo de Windows

Conocido esto, te explico el formato que vamos a seguir para especificar los atajos en Emacs:

  • Ctrl+G significa que tienes que mantener pulsada la tecla Ctrl y sin soltar pulsas la tecla G
  • Ctrl+X Ctrl+S significa que tienes que mantener pulsada la tecla Ctrl y sin soltar pulsas X, sueltas, y S
  • Ctrl+X K significa que tienes que mantener pulsada la tecla Ctrl, sin soltar pulsas X, sueltas la tecla Ctrl y pulsas K

Atajos y acciones básicas

Las acciones básicas: abrir, guardar, cambiar entre ficheros (Buffer) abiertos y cerrar.

  • Ctrl+X F para abrir ficheros (se abre el Minibuffer para que indiques la ruta del fichero a abrir)
  • Ctrl+X S para guardar los cambios del fichero que estás editando
  • Ctrl+X K para cerrar el fichero (Buffer) abierto, también denominado kill buffer (el Frame no se cierra)
  • Ctrl+X B para cambiar entre ficheros (Buffer) abiertos
  • Ctrl+X Ctrl+C para cerrar el Frame y con ello todos los ficheros (Buffer) abiertos

Atajos para trabajar con varios Window

Aquí te muestro los atajos necesarios para trabajar con varias ventanas o Window en un mismo Frame.

  • Ctrl+X 3 para dividir el Window en vertical

gnu_emacs_split_v.png

Figure 4: División vertical

  • Ctrl+X 2 para dividir el Window en horizontal

gnu_emacs_split_h.png

Figure 5: División horizontal

  • Ctrl+X O (letra O) para cambiar y moverse entre los diferentes Window
  • Ctrl+X 0 (número 0) para cerrar el Window que tiene el foco
  • Ctrl+X 1 para cerrar todos los Window menos el que tiene el foco (es una forma de maximizar el Window actual)

Cuando cierras un Window no se cierra el Buffer ni el fichero abierto en dicho Buffer. Para cerrar el Buffer tienes que usar el atajo, visto arriba, Ctrl+X K.

TODO Seleccionar, copiar, cortar y pegar

Vi

Vi es un editor ampliamente utilizado en el mundo UNIX y GNU/Linux. De hecho, como, es posible, que te hayas encontrado, en Git el editor por defecto es Vi.

En este apartado vamos a ver cómo usar este editor de forma básica. Es un editor muy potente pero con curva de aprendizaje alta.

Hoy en día, los programadores que optan por Vi como su editor de código usan versiones o "sabores" más "modernos" como son Vim o Neovim (nvim), especialmente este último.

nvim.png

Figure 6: Neovim (captura obtenida en la web oficial de Neovim)

Si haces una búsqueda en la Web verás que hay una versión muy popular que es la que ya he señalado anteriormente llamada Neovim.

Los modos de Vi

El editor Vi tiene dos modos de operación:

  • Modo de comandos: donde podemos desplazarnos dentro de un fichero y realizar operaciones de edición como buscar, eliminar y modificar texto, entre otras cosas. Cada vez que abras Vi te encontrarás en este modo.
  • Modo insertar: donde podemos escribir texto.

Cambios entre modos

Para pasar del modo comandos al modo insertar tienes que usar uno de los comandos que permite insertar texto (ver más abajo).

Para pasar del modo insertar al modo comandos hay que pulsar la tecla escape (ESC a partir de ahora).

Comandos más comunes

Para desplazarse por el fichero (en modo comando)

  • Abajo: j
  • Arriba: k
  • Izquierda: h
  • Derecha: l
  • Moverse palabra a palabra hacia adelante: w
  • Moverse palabra a palabra hacia atrás: b
  • Moverse frase a frase hacia adelante: (
  • Moverse frase a frase hacia atrás: )
  • Moverse párrafo a párrafo hacia adelante: {
  • Moverse párrafo a párrafo hacia atrás: }
  • Página arriba: Ctrl+U o PgUp
  • Página abajo: Ctrl+D o PgDn
  • Ir a una línea: 25gg (iría a la línea 25)
  • Ir a final de la línea: $
  • Ir al principio de la línea: 0
  • Para ir al inicio del fichero: gg
  • Para ir al final del fichero: G

Editar y modificar

  • Para insertar texto antes del cursor: i
  • Para insertar texto después del cursor: a
  • Para insertar texto al principio de la línea: I
  • Para insertar texto al final de la línea: A
  • Para insertar debajo de la línea: o
  • Para insertar arriba de la línea: O

Copiar y pegar

  • Para copiar la línea actual: yy
  • Para copiar una palabra: yw
  • Para pegar después del cursor: p
  • Para pegar antes del cursor: P

Borrar

  • Para borrar un carácter: x o X
  • Para borrar una palabra: dw (en realidad borra desde el cursor hasta el final de la palabra)
  • Para borrar la línea actual: dd

Deshacer

  • Para deshacer el último cambio: u

Abrir, guardar y salir

  • Para abrir un archivo: :e <ruta al fichero>
  • Para salir si no hay cambios por guardar: :q
  • Para guardar los cambios y salir: :x o :wq
  • Para salir sin guardar (forzar la salida): :q!
  • Para guardar con otro nombre de archivo (guardar como): :w <ruta al nuevo fichero>

Números de línea

  • Mostrar números de línea: :set number
  • Ocultar números de línea: :set nonumber

Buscar

  • Para buscar texto: /<texto> donde <texto> es el texto que quieres buscar

Una vez escribes el texto que quieres buscar tienes que presionar Intro y, a partir de ahí, pulsa n para buscar siguiente ocurrencia y N para buscar ocurrencia anterior. De esta manera navegas entre los resultados de la búsqueda.

Reemplazar

Te lo explico con un ejemplo. Imagina que quieres reemplazar "class main{" por "class Main {". Tienes que escribir el siguiente patrón:

:%s/class main{/class Main {/g

Repetir comandos

Puedes añadir un número delante de un comando para repetir dicho comando un número de veces. Algunos ejemplos:

  • y3y copia 3 líneas desde la posición del cursor
  • d5w elimina 5 palabras desde la posición del cursor
  • 5j se mueve 5 posiciones hacia adelante
  • 10w se mueve 10 palabras hacia adelante

Más sobre Vi

Si quieres conocer todas las opciones/comandos de Vi puedes visitar el manual desde la terminal:

$ man vi

O puedes buscar en la Web. Verás la cantidad de tutoriales, vídeos y recursos que hay alrededor de Vi.

Author: Román Ginés Martínez Ferrández

Created: 2025-12-15 lun 10:00

Validate