Básicamente, un nuevo blog relacionado a todo lo que este humilde servidor dice y hace, más allá de la temática que se cubre en el blog de tecnología.

Sobre este sitio

Esto no es nada más que una bitácora que continúa lo que comenzó en la anterior, con las facilidades de Blogger (ya saben).

viernes, 10 de abril de 2020

IDE's legendarios: EMACS (Introducción)




A lo largo y ancho del mundo de programación, podemos toparnos con varias interfaces de entorno de desarrollo interactivo (Interactive Development Enviroment o IDE en inglés), las cuales no sólo nos permiten editar de una forma bastante práctica o gráfica un aplicativo y/o parte de un código fuente. No obstante, al haber IDE's de código fuente ya populares como Visual Studio Code y Sublime Text, digamos que el pionero en dar forma al concepto acutal de IDE optimizado para código fuente ha de ser GNU EMACS, el cual viene a ser de los pioneros en brindar opciones de personalización, a tal grado de ser igual o más versátil que las opciones anteriormente mencionadas.

En esta ocasión, toca echar un vistazo a GNU EMACS, el editor de texto que surgió en el año 1984 como proyecto independiente tras 9 años de ser un complemento para un editor de texto conocido como TECO, de la mano de Richard Stallman. Dicho IDE logró destacar por varias implementaciones, como la de tener un intérprete LISP, agenda en texto plano (alias, org mode), machine learning e inteligencia artificial para codificación, cliente de correo electrónico, juegos incluídos y cualquier otra extravagancia que hasta ahora no me acuerdo.

Interfaces


Sí, tal y como dije: interfaces. GNU EMACS tiene dos interfaces: una interfaz gráfica, la cual tiene un mejor aspecto en varias distros GNU/Linux y MacOS (bueno, la versión de Windows te muestra todos los atajos de teclado e íconos paridos de Windows 2000/ME), y una interfaz en modo texto, la cual se invoca con emacs -nw desde cualquier terminal en sistemas operativos tipo UNIX.

Emacs en Windows. Nótese que la versión empleada no es la versión estable que encuentra en la web oficial de EMACS.
EMACS en modo texto (versión para Windows ejecutada en símbolo de sistema). Una auténtica delicia para quienes deseen programar y/o editar código fuente de forma remota.

Para instalarlo en Windows, debemos recurrir por el momento a la rama de desarrollo del IDE anteriormente mencionado, ya que la versión actual (26.3) simplemente está disponible en un ZIP y ejecutarlo desde ahí. En el caso de la distro GNU/Linux, está ya disponible desde el repositorio de su distro preferida, y por defecto les aparecerá la versión estable disponible (en el caso de Debian, está la versión 26.1, mientras que Arch y derivados está la versión 26.3).

Atajos de teclado más habituales


Aquí yace lo interesante de Emacs, ya que seguramente habrán visto varios atajos de teclado, los cuales se basan en las teclas CTRL y ALT. Pues, Emacs tiene la particularidad que buena parte de sus combinaciones de teclas aparentemente "abusan" de éstas (de ahí el por qué el mito del "meñiqe de Emacs", aunque tengamos en cuenta que buena parte de los comandos originales estaban pensados en las distribuciones de teclado diseñadas para las máquinas Lisp).

Teclado Space-Cadet empleado para las máquinas LISP de aquellos años. Nótese la posición de las teclas CONTROL y META.

Yendo al grano. Emacs tiene la particularidad de disponer de atajos de teclados en donde son relevantes las teclas CTRL y ALT, aunque a la hora de ver los atajos de teclado, lo único que veamos sean las letras C y M con guiones a diversas letras minúsculas. Ya que actualmente usamos la actual y casi estandarizada distribución de teclado basada en las de los IBM modelo M, aquí les explico en un breve gráfico el significado de dichas letras:

M [META] >> ALT
C [CONTROL] >> CTRL

Así es. La principal ventaja de dicha metodología de atajos de teclado es que es independiente de la distribución de teclado a la que hayamos estado acostumbrado, por lo que los comandos para poder hacer uso de una función resultan ser prácticas, sin importar si la distribución de teclado fuese francesa (AZERTY), alemana (QWERTZ) o Dvorak.

Por cierto, buena parte de las combinaciones de teclado de Emacs pueda que resulten incómodas al principio, por lo que también pondremos atajos de teclado alternativos que resulten ser mucho más rápidos de aprender, aliviando la tensión que puedan sentir las muñecas tras tanto estirar los dedos.

Apertura de archivos

  • Nuevo archivo >> C-x C-f
  • Abrir archivo >> C-x C-d
  • Guardar archivo >> C-x C-s
  • Guardar como >> C-x C-w

Edición de texto

  • Cortar >> C-w
  • Copiar >> M-w
  • Pegar (yank) >> C-y
  • Seleccionar  >> C-SPC
  • Seleccionar todo >> C-x h
  • Deshacer >> C-x u | C-_ | C-/
  • Rehacer >> C-f | C-c C-/
  • Reemplazar >> M-%

Manejo de búfers (o "ventanas")

  • Abrir nuevo búfer (horizontal) >> C-x 2
  • Abrir nuevo búfer (vertical) >> C-x 3
  • Cerrar otros búfers abiertos >> C-x 1
  • Cerrar búfer en uso >> C-x 0
  • Cambiar a otro búfer >> C-x o
  • Desplazarse entre búfers en una sola "ventana" >> C-x <LEFT> | C-x <RIGHT>

Manejo de pestañas (muy pronto, en Emacs 27.1 y sucesores)

  • Abrir nueva pestaña >> C-x t 2
  • Cambiar pestaña >> C-x t o
  • Cambiar búfer en otra pestaña >> C-x t b
  • Editar archivo en otra pestaña >> C-x t f

Cambio de mayúsculas/minúsculas en palabras

  • Letra Mayúscula (Uppercase) >> M-u
  • Letra minúscula (Lowercase) >> M-l
  • Todo en mayúsuclas (capitalize) >> M-c
  • Selección en mayúsculas >> C-x C-u
  • Selección en minúsculas >> C-x C-l

Extras

  • Abrir terminal (UNIX) | símbolo de sistema (Windows) >> M-x shell
  • Lector de noticias, cliente de correo y RSS >> M-x gnus
  • Calculadora >> M-x calculator
  • Calendario >> M-x calendar
  • Calendario lunar >> M-x phases-of-moon
  • Tetris >> M-x tetris
  • Torre de Hanoi >> M-x hanoi
  • Terapeuta >> M-x doctor
  • Modo VI/VIM (para los usuarios de VIM) >> M-x viper-mode

Por el momento, éstos son los atajos de teclado más usados que hay en Emacs. La inclusión de los atajos de teclado para las pestañas se debe a que es una de las funciones más esperadas en dicho IDE, por lo que sería injusto no incluirlos por más que fuesen banales en la versión actual (26.3). Además, Emacs también puedes usarlo como una agenda y/o suite ofimática minimalista a través del complemento Org Mode, por lo que te puede servir como agenda para cualquier plan.

De todas formas, les recomiendo seguir el tanto el tutorial (disponible en español) ejecutando la combinación de teclas C-h t (CTRL-H y la letra t) y también la guía rápida que ofrece la Free Software Foundation para así hacerse una idea de las diversas funciones que tiene este aplicativo.