====== EMACS ====== Emacs es un editor de texto desarrollado por Richard Stallman, como parte del proyecto GNU. A Emacs se le pueden añadir plugins para aumentar su funcionalidad. Actualmente Emacs, es entre otras cosas una herramienta de programación muy interesante, aunque puede servir como buzón de correo electrónico, IRC, plataforma de juegos (simples), etc. Puede usarse tanto en un entorno gráfico, como en línea de comandos. En esta guía vamos a centrarnos en la versión de la consola de comandos. La potencia de Emacs no sólo se representa a través de su funcionalidad (plugins); las teclas de acceso rápido una vez interiorizadas hace que la productividad se dispare. Emacs tiene dos teclas especiales que se utilizan en las teclas de acceso rápido en combinación con el resto de teclas normales del teclado para introducir comandos, o para usar como teclas de acceso rápido. Éstas son: * **C**: tecla //ctrl// por defecto. * **M**: tecla //alt// por defecto. A continuación se explicará cómo usar Emacs. ===== Ayuda de EMACS ===== Para recibir ayuda, puede escribirse **C+h + [Carácter de ayuda]**.\\ Si no se sabe qué ayuda pedir, indicar **?** para que EMACS ofrezca la ayuda disponible. * **C+h + c + [comando; ejemplo: C+p]**: Muestra una descripción muy breve de qué hace el comando especificado. La **c** permite pedir la ayuda de un comando cualquiera. * **C+h + k + [comando]**: Muestra información detallada del comando especificado. Igual que la forma anterior, pero dando más información. * **C+h + f + [función]**: Muestra información de la función. Por ejemplo, especificando //previous-line// muestra información sobre el comando C+p. * **C+h + v + [variable]**: Muestra la documentación de las variables de EMACS (hay que especificarlas). * **C+h + a + [comando a buscar]**: Muestra una lista de los comandos que contienen la palabra, o comando, especificada. * **C+f + r**: EMACS muestra su manual de ayuda. ===== Archivo ===== Para abrir o crear archivo: **C+x + C+f** //find//. En realidad este comando está pensado para buscar el archivo, además de dar la posibilidad de crearlo. Para guardar archivo: **C+x + C+s** //save//. Para "Guardar como": **C+x + C+w**. Para recorrer varios archivos abiertos: **C+x + flecha izda. o drcha.**. Cancelar el comando que se está escribiendo: **C + g**.\\ También es posible salir de lo que se está haciendo con: **ESC + ESC + ESC**. Salir de Emacs: **C+x + C+c**. ===== Movimiento del cursor ===== Movimiento normal del cursor: * Línea anterior: **C + p** //previous// o flecha abajo. * Línea siguiente: **C + n** //next// o flecha arriba. * Carácter siguiente: **C + f** //forward// o flecha derecha. * Carácter anterior: **C + b** //backward// o flecha izquierda. Movimiento por texto: * Inicio línea: **C + a** o tecla //inicio//. * Fin línea: **C + e** o tecla //fin//. * Inicio oración: **M + a**. * Fin oración: **M + e**. * Avanzar palabra: **M + f** //forward// o flecha derecha. * Retroceder palabra: **M + b** //backward// o flecha izquierda. Moverse por cantidades mayores de texto: * Inicio texto: **M + <**. * Fin texto: **M + >**. * Avanzar página: **C + v** o tecla //avpag//. * Retroceder página: **M + v** o tecla //repag//. * Avanzar 1/2 pantalla: **C + l**. Tras haber avanzado una pantalla entera (2 veces C+l) , el cursor vuelve a la posición inicial (tercer C+l). Para efectuar alguna de las acciones anteriores un número n de veces: **C + n (nº repeticiones) + [acción]** Hay una excepción a la repetición de acción n veces: C+v y M+v mueven líneas en vez de páginas. ===== Editar texto ===== Para seleccionar texto: - Añadimos marca al inicio de la selección con: **C + spc **. - Mover cursor de forma convencional hasta haber seleccionado el texto deseado. Copiar texto seleccionado: **esc + w**.\\ Cortar texto seleccionado: **C + w**.\\ Cortar desde la posición del cursor hasta fin de línea: **C + k**.\\ Pegar: **C + y**. Una vez se ha pegado, con **M + y** se cambia el texto pegado por textos copiados o cortados anteriormente, hasta dar con el que buscamos.\\ Para deshacer los cambios efectuados: **C + /** o bien **C+x + u**. ===== Buscar texto ===== Para buscar un texto de forma incremental, es decir, que se vaya marcando según se escribe: * **C + s**: Cada vez que pulsemos, nos moveremos hacia adelante, a la siguiente referencia marcada en el texto. * **C + r**: Cada vez que pulsemos, nos moveremos hacia atrás, a la anterior referencia marcada en el texto. Para buscar un texto de forma no incremental, es decir, escribiéndolo completamente antes de la búsqueda: * **C + s + intro**: Cada vez que pulsemos, nos moveremos hacia adelante, a la siguiente referencia del texto escrito. * **C + r + intro**: Cada vez que pulsemos, nos moveremos hacia atrás, a la anterior referencia del texto escrito. Cuando introducimos alguno de los comandos para realizar búsquedas (como los anteriores), con **M + c** cambiamos la sensibilidad de mayúsculas/minúsculas de la búsqueda. ===== Sustituir texto ===== La sustitución incondicional sustituye una cadena de caracteres por otra, sin preguntar antes. El comando de Emacs es el siguiente: **M + x + intro + "replace-string" + intro + [cadena a reemplazar] + [nueva cadena] + intro**. De forma similar, podemos realizar una sustitución, indicando que nos hagan una pregunta por cada posible sustitución: **M + '%' + [cadena a reemplazar] + intro + [nueva cadena] + intro**. ===== Buffers (ventanas) ===== El entorno de Emacs puede dividirse en "buffer" que son ventanas que pueden contener diferentes tipos de información (errores de código si estamos programando, diferentes documentos, etc). Puede darse el caso de que tengamos buffers abiertos, aunque no se vean, en 2º plano. Para manejar buffers: * Ver lista de buffers: **C+x + C+b**. * Para ir a otro buffer: **C+x + b + [nombre del buffer]**. También podría hacerse con **C+x + C+f**, pero es más coñazo. * Guardar buffer (que no el archivo): **C+x + s**. EMACS pregunta por cada buffer por separado. * 2 buffers horizontales: **C + x + 2**. * 2 buffres verticales: **C + x + 3**. * 1 único buffer: **C + x + 1**. * Cambiar el cursor de buffer: **C+x + o**. * Cerrar un buffer: **C + x + k**. Si hay dos ventanas abiertas, para el texto de la ventana en la que no está el cursor, se puede hacer con: **C+M+v** o bien **ESC C+v** ===== Suspender EMACS ===== Si usamos EMACS en un entorno gráfico, no existe este problema, pero si lo usamos en línea de comandos existe la posibilidad de "suspenderlo" para trabajar con otras aplicaciones y luego poder retornar a donde lo dejamos.\\ * Para suspender EMACS: **C + z**. * Para volver desde el //shell//: **fg** o **%emacs**. ===== Autoguardado ===== EMACS guarda automáticamente los archivos que se están editando. Estos archivos son el nombre del original, con **#** como primer y último carácter.\\ Este archivo es diferente del que empieza por **~**, que es una copia del archivo original antes de realizar cambios. Una especie de copia de seguridad anterior.\\ Para recuperar el archivo guardado automáticamente, cargamos el archivo normal con **C+x + C+f [nombre del archivo]**, y después tecleamos **M+x recover-file**.\\