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
- Entender la utilidad de los editores de texto
- Saber Utilizar un Editor de Texto Avanzado (en concreto Emacs)
Clases
- ¿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:
- documentos (Ofimática: procesado de textos)
- archivos de configuración (Administración Servicios)
- código fuente de programas (Programación: Software)
- 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
- Descargar (Download emacs-XX.Y-bin-i386.tar.gz)
- Desempaquetar / Descomprimir en un directorio (vale un llavero USB)
- Ejecutar addpm.exe (dentro del directorio emacs-version/bin)
- Mac OS X: Versión Aquamacs
- Comenzar a Manejar Emacs:
- Notación Teclas
- Tecla M (Meta): depende de la plataforma. En un PC poner M-x significa:
- Pulsar ESC, Soltar, Pulsar x
- Pulsar Alt, Pulsar x (sin soltar Alt)
- Abrir Emacs (comando emacs) y salir: C-x C-c
- Elementos de la Pantalla Emacs
- Barra de menús (aparece pulsando F10)
- Barra de herramientas (sólo en modo gráfico).
- Área de edición.
- Barra de modo (ModeLine). ModeLine (sc:mod nombrebuf (mayor menores) --Pos)
- Área de eco (eco) y minibuffer (entrada/salida)
- Cancelar Mandatos (detener operación en curso): C-g
- Edición Básica de Texto
- Moverse por el Texto
- C-v / M-v (Cambiar de página)
- C-l (Centrar el texto)
- C-p, C-n, C-b, C-f (Probar con cambio de Línea)
- M-f, M-b (por palabras)
- C-a, C-e, M-a, M-e (inicio/final de línea)
- M-<, M->
- Moverse por el Texto
- Archivos, Ficheros, Ventanas, Buffers
- Trabajo Básico de Archivos
- Ficheros y Buffers
- Concepto de "Visitar Archivo"
- Buffers
- Qué son y para qué existen
- Listado de Buffers C-x C-b, Cambiar de Buffer C-x b
- Guardar Todos: C-x s, Cerrar un Buffer: C-x k
- Ventanas
- C-x N Dividir la ventana (N=2: horizontal, N=3: vertical)
- C-x o Cambiar de Ventana
- Archivos
- Ver el nombre del archivo y Codificación
- Comandos: Abrir: C-x C-f, Guardar: C-x C-s, Guardar Como: C-x C-w, Insertar Archivo: C-x C-i
- Copias de Seguridad: nombre_archivo~, Autoguardar # nombre_archivo #
- Seleccionar y Borrar Texto
- Seleccionar Texto (regiones)
- Región: texto desde Posición de la Marca (mark) a Posición del Cursor (point)
- Poner Marca: C-SPC (hace eco poniendo Mark set) o C-@
- Intercambiar marca y cursor: C-x C-x
- Con ratón: pulsar/arrastrar, doble-click (palabra), triple-click (línea)
- Debe resaltar lo seleccionado (sino ejecutar M-x transient-mark-mode)
- Borrar/Eliminar/Recuperar Texto
- Diferencia entre Borrar (no se puede recuperar) y Eliminar (Kill)
- Cada eliminación se va añadiendo (no sustituye a la anterior)
- 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.
- Comandos para Pegar (yanking)
- C-y
- Con ratón:: pulsar a la vez dos botones (izquierdo y derecho) ó botón central
- 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)
- Comando deshacer: C-x u
- Seleccionar Texto (regiones)
- Macros, Comandos y Funciones
- Lo básico de las Macros
- Qué son
- Para Qué Sirven
- Crear Macro: comenzar: C-x ( y finalizar: C-x )
- Ejecutar Macro Actual: C-x e
- Comandos y funciones en Emacs
- Todos los comandos son funciones en Emacs
- C-x (Character eXtend) y M-x (Named command eXtend)
- Usar Miles de funciones
- Llamar a la función usando : M-x AUTOCOMPLETAR
- Las funciones pueden ser programas, juegos, funciones de configuración y modos (comportamiento personalizado)
- Ejemplos de Funciones
- Argumentos Numéricos de las funciones: C-u ó Meta (ESC ó Alt) seguido del número
- Lo básico de las Macros
- Buscar y Reemplazar:
- Uso de búsqueda incremental (busca a medida que escribo)
- Proceso
- Comienzo la Búsqueda (C-s ó C-r)
- Escribo la cadena de búsqueda
- Cancelo la Búsqueda (RET ó C-g) o sigo buscando
- 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)
- Buscar y Reemplazar:
- replace-string (utilizando TAB)
- query-replace (y, SPC, n, !, q)
- Uso de la Ayuda en Emacs
- Utilizar AUTOMPLETAR (con TAB)
- Comando de Ayuda: C-h
- 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 ? )
- Modos (Comportamiento Personalizado)
- Aspecto, comandos, etc, personalizados para un tipo de texto
- Como funcionan: C-h m
- ¿Cómo cargarlo? M-x NOMBREMODO-mode
- ¿Cómo desactivarlo? Hay que cargar otro modo (Por ejemplo text o fundamental)
- ¿Cómo ver si está cargado?. Revisar Linea de Modo (ModeLine)
- Uso Básico de Expresiones Regulares (Básico)
- Qué son: descripción formal (lenguaje) de una cadena de texto
- Cómo se utilizan: poniendo operadores (Metacaracteres) y caracteres
- Hay varios tipos (según el significado y potencia de los operadores): no hay un único estándar aunque coincide bastante (dialectos).
- Quienes la utilizan: Comandos, Editores de Texto, Procesador de Texto, Lenguajes de Programación, etc
- 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
- Proceso
- Diseñar REGEX: pattern
- Revisar el texto: subject o cadena de texto
- Ver si hay coincidencia (match)
- Búsqueda REGEX en Emacs: C-M-s (adelante) ó C-M-r (atrás)
- 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:
- Agrupación: utilizando paréntesis (con caracter de escape): \( y \)
- Sustitución: utilizando el número de grupo (con caracter de escape): \1 o \2 ó \n, siendo n el número del grupo
- Tutoriales:
- Tutorial muy completo
- Pequeño tuturial (no revisar las particularidades de PHP, hacer la práctica en Emacs)
- Breve y Sencillo
- Más Metacaracteres:
- 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
- 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
- Introducción a Emacs
- 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:
- Tutoriales: completo / Mini
- Breves: Reference Card, Q&A