Comienza Contenido

Emacs: Uso de un editor de texto avanzado

Una herramienta imprescindible para un administrador de sistemas es el uso de un editor de texto avanzado. Existen dos candidatos principales: vi y emacs. Propongo el uso de Emacs porque es el que mejor conozco, el más completo y tiene mayor funcionalidad. Pero da igual, la cuestión es usar uno potente.

Objetivos

  1. Entender la utilidad de los editores de texto
  2. Saber Utilizar un Editor de Texto Avanzado (en concreto Emacs)

Clases

  1. ¿Qué es un editor de Texto Avanzado?
    • Qué es un archivo de texto
    • Elementos en un Archivo de Texto:contenido / estructura / formato
    • Editor de Texto vs Procesador de Texto (Editores WYSIWYG)
    • Uso de Archivos de Texto:
    • Funciones Básicas:
      • Manejo de Archivos: Abrir / Cerrar / Guardar
      • Manejo de Texto: Cortar/Copiar/Pegar, Buscar, Reemplazar
    • Funciones Avanzadas: diferente comportamiento según la extensión del archivo (programación, documentación,etc), búsqueda y reemplazo avanzados (REGEX), automatización de tareas, etc
    • Características: licencia, coste uso, coste aprendizaje, plataforma de trabajo, usabilidad, etc
    • Algunos Ejemplos: Emacs, Vi / vim, TextEd, Ultraedit (comercial), etc
    • Tabla Comparativa de Editores (Comparison Table)
    • Qué es EMACS
      • ¿Qué significa? Emacs Makes All Computation Simple, Emacs Makes A Computer Slow, Escape Meta Alt Control Shift ... simplemente Editor MACroS.
      • Pequeña Historia: PDP 10-11 (Años 70), creado por Richard Stallman. Idea de Software libre.
      • Ventajas / Inconvenientes (Evitar Editor War)
    • Instalación Emacs:
      • Linux: paquetes o código fuente
      • Windows
        1. Descargar (Download emacs-XX.Y-bin-i386.tar.gz)
        2. Desempaquetar / Descomprimir en un directorio (vale un llavero USB)
        3. Ejecutar addpm.exe (dentro del directorio emacs-version/bin)
      • Mac OS X: Versión Aquamacs
  2. Comenzar a Manejar Emacs:
    1. Notación Teclas
    2. Tecla M (Meta): depende de la plataforma. En un PC poner M-x significa:
      1. Pulsar ESC, Soltar, Pulsar x
      2. Pulsar Alt, Pulsar x (sin soltar Alt)
    3. Abrir Emacs (comando emacs) y salir: C-x C-c
    4. Elementos de la Pantalla Emacs
      1. Barra de menús (aparece pulsando F10)
      2. Barra de herramientas (sólo en modo gráfico).
      3. Área de edición.
      4. Barra de modo (ModeLine). ModeLine (sc:mod nombrebuf (mayor menores) --Pos)
      5. Área de eco (eco) y minibuffer (entrada/salida)
    5. Cancelar Mandatos (detener operación en curso): C-g
    6. Edición Básica de Texto
      1. Moverse por el Texto
        1. C-v / M-v (Cambiar de página)
        2. C-l (Centrar el texto)
        3. C-p, C-n, C-b, C-f (Probar con cambio de Línea)
        4. M-f, M-b (por palabras)
        5. C-a, C-e, M-a, M-e (inicio/final de línea)
        6. M-<, M->
  3. Archivos, Ficheros, Ventanas, Buffers
    1. Trabajo Básico de Archivos
    2. Ficheros y Buffers
      1. Abrir (visitar) un archivo C-x C-f
      2. Guardar un Archivo: C-x C-s
    3. Concepto de "Visitar Archivo"
    4. Buffers
      1. Qué son y para qué existen
      2. Listado de Buffers C-x C-b, Cambiar de Buffer C-x b
      3. Guardar Todos: C-x s, Cerrar un Buffer: C-x k
    5. Ventanas
      1. C-x N Dividir la ventana (N=2: horizontal, N=3: vertical)
      2. C-x o Cambiar de Ventana
    6. Archivos
      1. Ver el nombre del archivo y Codificación
      2. Comandos: Abrir: C-x C-f, Guardar: C-x C-s, Guardar Como: C-x C-w, Insertar Archivo: C-x C-i
      3. Copias de Seguridad: nombre_archivo~, Autoguardar # nombre_archivo #
  4. Seleccionar y Borrar Texto
    1. Seleccionar Texto (regiones)
      1. Región: texto desde Posición de la Marca (mark) a Posición del Cursor (point)
      2. Poner Marca: C-SPC (hace eco poniendo Mark set) o C-@
      3. Intercambiar marca y cursor: C-x C-x
      4. Con ratón: pulsar/arrastrar, doble-click (palabra), triple-click (línea)
      5. Debe resaltar lo seleccionado (sino ejecutar M-x transient-mark-mode)
    2. Borrar/Eliminar/Recuperar Texto
      1. Diferencia entre Borrar (no se puede recuperar) y Eliminar (Kill)
      2. Cada eliminación se va añadiendo (no sustituye a la anterior)
      3. Comandos para Eliminar (Cortar)
        • Palabras: C-d/M-d
        • Líneas/Párrafos: C-k/M-k
        • Regiones: Cortar (C-w) y Copiar (M-w)
        • Con ratón: una vez seleccionado hacer doble click botón derecho.
      4. Comandos para Pegar (yanking)
        • C-y
        • Con ratón:: pulsar a la vez dos botones (izquierdo y derecho) ó botón central
    3. Uso del portapapeles múltiple:
      • Emacs tiene un anillo (ring) donde copia todo
      • Se pega con C-y y después M-y para pegar textos anteriores
      • Ejemplo: C-y M-y M-y (pegaría lo copiado dos veces atrás)
    4. Comando deshacer: C-x u
  5. Macros, Comandos y Funciones
    1. Lo básico de las Macros
      1. Qué son
      2. Para Qué Sirven
      3. Crear Macro: comenzar: C-x ( y finalizar: C-x )
      4. Ejecutar Macro Actual: C-x e
    2. Comandos y funciones en Emacs
      1. Todos los comandos son funciones en Emacs
      2. C-x (Character eXtend) y M-x (Named command eXtend)
      3. Usar Miles de funciones
        1. Llamar a la función usando : M-x AUTOCOMPLETAR
        2. Las funciones pueden ser programas, juegos, funciones de configuración y modos (comportamiento personalizado)
        3. Ejemplos de Funciones
    3. Argumentos Numéricos de las funciones: C-u ó Meta (ESC ó Alt) seguido del número
  6. Buscar y Reemplazar:
    1. Uso de búsqueda incremental (busca a medida que escribo)
    2. Proceso
      1. Comienzo la Búsqueda (C-s ó C-r)
      2. Escribo la cadena de búsqueda
      3. Cancelo la Búsqueda (RET ó C-g) o sigo buscando
    3. Trucos: C-s C-s (búsqueda anterior), Siguiente Ocurrencia (C-s), Ocurrencia Anterior (C-r), Moverse por el anillo de búsquedas anteriores (M-p y M-n)
    4. Buscar y Reemplazar:
      • replace-string (utilizando TAB)
      • query-replace (y, SPC, n, !, q)
  7. Uso de la Ayuda en Emacs
    1. Utilizar AUTOMPLETAR (con TAB)
    2. Comando de Ayuda: C-h
    3. Opciones
      • f: nombre de función
      • w: comando (teclas) asociadas a la función
      • c: secuencia de comandos (descripción breve)
      • k: secuencia de comandos (descripción larga)
      • t: tutorial
      • a: apropos (búsqueda por claves)
      • Ayuda sobre la ayuda (C-h otra vez o ? )
  8. Modos (Comportamiento Personalizado)
    1. Aspecto, comandos, etc, personalizados para un tipo de texto
    2. Como funcionan: C-h m
    3. ¿Cómo cargarlo? M-x NOMBREMODO-mode
    4. ¿Cómo desactivarlo? Hay que cargar otro modo (Por ejemplo text o fundamental)
    5. ¿Cómo ver si está cargado?. Revisar Linea de Modo (ModeLine)
  9. Uso Básico de Expresiones Regulares (Básico)
    1. Qué son: descripción formal (lenguaje) de una cadena de texto
    2. Cómo se utilizan: poniendo operadores (Metacaracteres) y caracteres
    3. Hay varios tipos (según el significado y potencia de los operadores): no hay un único estándar aunque coincide bastante (dialectos).
    4. Quienes la utilizan: Comandos, Editores de Texto, Procesador de Texto, Lenguajes de Programación, etc
    5. Uso Básico:
      • Patrón de un sólo símbolo: cualquier carácter
      • Cualquier caracter: . (el punto)
      • Caracteres Multiplicadores: ?, +, * (interrogación, más y asterisco)
      • Caracteres Ancla: ^ (principio de línea), $ (fin de línea)
      • Cualquier Caracter de una lista: Uso de Corchetes
      • Ejemplos: a.b , a?8+5.b*.+ , 24ab+89
    6. Proceso
      • Diseñar REGEX: pattern
      • Revisar el texto: subject o cadena de texto
      • Ver si hay coincidencia (match)
    7. Búsqueda REGEX en Emacs: C-M-s (adelante) ó C-M-r (atrás)
  10. Uso Avanzado
    • Más Metacaracteres:
      • Usar metacaracteres (Uso de Barra de Escape \ )
      • Caracteres Especiales dentro de los corchetes: ^ (inverso del conjunto), - (rangos de caracteres)
      • Caracteres Multiplicadores: {n,m} (minimo a máximo)
      • Agrupación de Elementos: (grupo) (se forman con paréntesis)
    • Las regex son ambiciosas: máximo número de caracteres que cumplen la condición
    • Reemplazo regex en Emacs
      • Funciones: replace-regexp, query-replace-regexp
      • Agrupación y Sustitución en Expresiones Regulares:
        1. Agrupación: utilizando paréntesis (con caracter de escape): \( y \)
        2. Sustitución: utilizando el número de grupo (con caracter de escape): \1 o \2 ó \n, siendo n el número del grupo
    • Tutoriales:
  11. Macros en Emacs: (Keyboard Macros)
    • Ejemplo: C-x ( M-f HOLA C-x ) ¿Qué hace? ¿Qué hace si después pulso ESC 5 C-x e?
    • ¿Cómo editar una macro?: Funcion edit-named-kbd-macro (con nombre) o edit-last-kbd-macro (el último) (Editar, Guardar o Anular)
    • Aspecto de esta macro: Un ; indica un comentario en LISP, aparece el comando (por ejemplo M-f) y el nombre de la función (por ejemplo forward-word)
      		;; Keyboard Macro Editor.  Press C-c C-c to finish; press C-x k RET to cancel.
      		;; Original keys: M-f HOLA
      		
      		Command: last-kbd-macro
      		Key: none
      		
      		Macro:
      		
      		M-f			;; forward-word
      		HOLA			;; self-insert-command * 4
      		
      	      
    • ¿Cómo añadir comandos a una macro?: C-u C-x ( . Ejecuta y permite añadir comandos
    • ¿Cómo le doy un nombre a una macro?: C-x C-k n. Función: name-last-kbd-macro
    • Función edit-kbd-macro (me pregunta):
      • Editar Macros
      • Última Macro (C-x e), las últimas 100 (C-x l) o secuencia de teclas personalizada
    • Preguntar si continua la ejecución: C-x q
  12. Introducción a Lisp y configuración Emacs
    • En Emacs TODO son funciones elisp (Emacs Lisp)
    • Todos son LIStas: (nombre_funcion valor) entre paréntesis
    • Ejemplos de funciones:
      • (kill-buffer "busqueda_piso.txt")
      • (sgml-insert-element "ul" nil)
      • (find-file "~/tmp/ejemplo.txt" 1)
      • (query-replace-regexp "[ab]\\(a\\)" "@\\1@" nil nil nil)
      • (isearch-resume "@" nil nil nil "@" t)
    • Comando para ver comandos anteriores:
      • C-x ESC ESC (También M-x repeat-complex-command)
      • M-x command-history (lista de últimos comandos)
    • Configuración de Emacs:
      • Utilizando el Menú: M-x customize (y todas sus versiones)
      • Directamente en archivo de configuración .emacs (en mi HOME)

Actividades

  • Manejo Básico
    • Introducción a Emacs
      • Búsqueda de Editores de Texto Avanzados (Internet, 30 minutos)
      • Instalar Emacs. Entrar y Salir del programa
    • Comenzar a manejar Emacs. Abrir un archivo y moverse por el texto
    • Manejar archivos y Buffers desde Emacs
    • Gestionar Texto: Cortar/Copiar/Pegar
  • Gestión de Texto
    • Búsquedas y Reemplazos
    • Repaso Tutorial (C-h t)
    • Probar Búsquedas, Macros y Funciones (jugar con ejemplos)
    • Lista de funciones
    • Trabajo con archivo de texto (buscar y reemplazar)
  • Manejo Avanzado
    • Trabajo con Expresiones Regulares
    • Búsqueda y Reemplazo de forma avanzada
  • Repaso y Ejercicios
    • Trabajo automatizando tareas (macros y funciones)
    • Uso Avanzado (Modo dired y text)
    • Personalización y Configuración

Duración del Curso

El esfuerzo estimado del curso es de 1 crédito ECTS. Unas 30 horas de dedicación.

Recursos a Utilizar

Se utilizará el tutorial (en español) de Emacs que está instalado en la máquina local (C-h t). Pero puedes ver otros: