Table of Contents

Problemas por resolver :

Los mensajes enviados con RMAIL, no se copian en la carpeta IMAP de salida "sent", lo cual vendría muy bien para poder llevar constancia.

Una vez volcados por imap los mensajes con mailutils movemail.. ¿ no se pueden volver a subir al servidor ?

Para enviar un email se realiza con C-c C-s, pero he comprobado que C-c C-c tambien lo realiza…¿ como puedo quitar este atajo ?

Nota : Este tutorial, no es un tutorial oficial y puede contener errores.Este tutorial es un tutorial realizado el propio estudio del programa Emacs. Es un manual de auto-ayuda para organizar conceptos y disponer de un documento propio donde ir documentando conceptos aprendidos sobre Emacs. Eres libre de consultar este manual, teniendo en cuenta de que Emacs es un programa auto-documentado, que dispone de tutorial propio y ayuda.

Manual oficial : https://www.gnu.org/software/emacs/manual/htmlnode/emacs/index.html

TUTORIAL DE INTRODUCCION A EMACS ############################################################################

1 Historia de emacs

El desarrollo de la primera versión de Emacs fué a mediados de los 70, y el programa continua activo en la actualidad ( 2019).

Emacs cuenta con unos 10.000 comandos y su interfaz permite combinar estos comandos en macros para automatizar los trabajos.

Las implementaciones de Emacs se han realizado con el lenguaje de programacion LISP, permitiendo a los usuarios crear nuevos comandos o aplicaciones para el editor.

El desarrollo de Emacs comenzo en 1970 en el AI del MIT, para las PDP-6 Y PDP-10 con sistema operativo ITC, y su editor de texto TECO.

El EMACS original fue escrito en 1976 por Carl Mikkelsen, David A. Moon and Guy L. Steele Jr, como un conjunto de macros para el editor TECO de la PDP-6.

El editor TECO no era wyswyg, sino que tenia dos modos diferentes para visualizar e insertar.

Richard Stallman - Stallman.org visito Stanford y vio la potencia del editor E que sí que era WYSWYG escrito por Fred Wright, y a su vuelta al MIT donde Carl Mikkelsen, un hacker del AI MIT, habia añadido a TECO un modo llamado Control-R que permitia que la pantalla se acutalizara con cada pulsacion de tecla.

Stallman reimplementó esta funcionalidad para que se ejecutara eficientemente.

James Gosling escribió EMACS en 1981, y fue el primer EMACS en correr en Unix. Fue programado en C, y usaba Mocklisp como lenguaje extension.

Stallman, comenzó a trabajar en GNU Emacs, y en 1984 produjo una alternativa libre al programa privativo Gosling Emacs. A pesar de que inicialmente baso su programa en goslin, tuvo que reescribir casi todo el codigo para que emacs contara con LISP como lenguaje de extension.

Emacs fué el primer programa lanzado bajo GNU project, y fué escrito en C. La primera versión fue lanzada en 1985.

Fuente :https://es.wikipedia.org/wiki/Emacs

2 Que es emacs

Su nombre proviene de la contracción : Editor Macros

Los mandatos en Emacs : Cada atajo de teclado, es una llamada a una funcion. Es lo que se llama en Emacs un mandato.

Los mandatos son funciones escritas en Elisp ( lisp para Emacs ).

Estos mandatos o funciones son invocados cuando pulsamos un atajo de teclas, o llamamos a la función por su nombre directamente.

3 Preguntas frecuentes y consejos

  • Puedes cambiar tu tecla Ctrl por tu tecla CAPS-LOCK ( Si decides hacer esto, debes hacerlo desde el principio. Si te acostumbras a usar la tecla Ctrl,

luego te será más complicado pasar a usar la tecla CAPS-lock ). Esto lo realizan algunos usuarios para evitar lesiones en la muñeca, al estar la tecla control mas bajo en el teclado. Yo no lo recomiendo. Emacs no seria Emacs, sin tecla CONTROL.

  • Puedes mantener pulsada la tecla Control sin soltarla para comandos del tipo C-x C-f
  • Como evitar lesiones : RSI Repetitive strain injury
  • Para evitar estas lesiones : Trata de usar tus dos manos, apoya los codos en la mesa, no tuerzas tus muñecas en exceso. Busca

un teclado tipo portátil ( con teclas bajas que no cueste mucho presionarlas), asi te cansarás mucho menos.

3.1 He empezado a estudiar Emacs… y me parece muy complicado.

No te preocupes. Trata de seguir y no salir de Emacs, trata de hacerlo todo desde Emacs ! Irás mejorando e irás pasando comandos de tu cabeza a tus manos ( memoria muscular ). Cada vez te costará menos.

Nunca es tarde para comenzar a usar Emacs. Lo importante es empezar a usarlo,y no sentirse arrepentido de no haber empezado antes !

3.2 Mi teclado no tiene tecla META :-(

Prueba con tu tecla ALT o ESC.

¿ porque llaman a la tecla META, Alt o Esc ?

Cuando Emacs se programó hace 30 años, los teclados no tenian tecla ALT, por lo todos los manuales siguen refieriendose a la tecla META.

El teclado original con el que se programo Emacs, era un modelo llamado "Space cadet" del fabricante Symbolics

Enlace : https://en.wikipedia.org/wiki/Space-cadet_keyboard

3.3 Quiero seguir usando C-c C-V para copiar y pegar

No lo hagas ! Aunque Emacs te permite esto ( a través de cva-mode ), aprenderás más si te adaptas la dureza de Emacs.

3.4 Consejos

  • No uses el ratón bajo ningun concepto. Escóndelo !
  • Hazte el tutorial inicial de Emacs al menos 3 veces.
  • Usa la ayuda propia de Emacs C-h a
  • Cuando uses el mini-buffer , usa la tecla TAB para autocompletar.

4 Conceptos basicos previos

4.1 Diferencia entre fichero y buffer

El buffer se encuentra en memoria RAM El fichero se encuentra en disco y no es modificable ( hasta que sobreescribamos el contenido de un buffer, sobre el fichero ) Cuando un buffer lleve un asterisco antes y después del nombre, es indicador de que el buffer no tiene correspondencia con ningun fichero. El nombre "visitar fichero" proviene de esto. Que es diferente al concepto "Abrir fichero".

Al trabajar con un buffer, es mucho más complicado perder información, ya que estás trabajando sobre una copia del fichero - Ojo : Cuando guardes el buffer, con el nombre de fichero existente, realizarás la sustitución del contenido del buffer->por el contenido del fichero.

5 Enlaces

En esta sección de enlaces, incluyo todos los enlaces que he ido usando para realizar la redacción de este humilde manual. Si consideras que estaría bien añadir algún enlaces más, ponte en contacto conmigo.

PAGINA OFICIAL DE GNU EMACS

https://www.gnu.org/software/emacs/.

MANUAL OFICIAL DE EMACS

Manual de emacs HTML : https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html

Manual de Emacs impreso : https://shop.fsf.org/books/gnu-emacs-manual-18th-edition-v-261

MANUAL OFICIAL DE ORG-MODE

Compra de libro impreso :http://www.network-theory.co.uk/org/manual/

Descarga de libro PDF : https://orgmode.org/orgguide.pdf

Vista del libro HTML : https://orgmode.org/guide/

Como ayudar al proyecto org-mode : https://orgmode.org/worg/org-contribute.html

Lista de correo : https://lists.gnu.org/mailman/listinfo/emacs-orgmode

Canal chat IRC : https://webchat.freenode.net/

Creadores / Agradecimientos : https://orgmode.org/org.html#History-and-Acknowledgments

OTROS

EMACS IS SEXY

Temas para Emacs : [[https://emacsthemes.com/][

https://emacsthemes.com/]] https://pawelbx.github.io/emacs-theme-gallery/

Videotutoriales :

http://emacsrocks.com/

http://emacsmovies.org/

CheatSheets / Ayudas visuales :

http://sachachua.com/blog/2013/09/how-to-learn-emacs-keyboard-shortcuts-a-visual-tutorial-for-newbies/

http://sachachua.com/blog/2014/01/tips-learning-org-mode-emacs/

Listado de comandos completo : https://www.cs.colostate.edu/helpdocs/emacs-bindings

6 Razones para usar emacs

  • Desde un solo programa puedes hacerlo casi todo.
  • Mayoritariamente usamos el PC para trabajar con texto ( editing ).
  • Puedes programar tus propias funcionalidades, sino existen. ( Emacs Lisp ).
  • Puedes usar la terminal desde el propio Emacs.
  • Puedes compilar tus programas.
  • Con emacs no solo puedes editar los archivos locales, sino archivos remotos.
  • Emacs es Software Libre - Esta debe ser la primera razon para comenzar a usar Emacs.
  • Soporta varios idiomas.
  • Puedes usarlo como editor de lenguajes de programación.
  • Herramientas para compilar, ejecutar y comprobar programas.
  • Puede realizar la comparacion de archivos.
  • Explorador de archivos.
  • Cliente de correo electronico, RSS y newsgroups.
  • Juegos en Emacs. ( Tetris, ajedrez, … )
  • Si eres Administrador de Sistemas y debes modificar algun archivo de configuracion o algun programa, podrás hacerlo de forma fácil.

Cambiando el modo de Emacs al lenguaje que desees editar (Emacs detecta automaticamente el contenido de los archivos ).

6.1 Porque es portable y software libre.

  • Los programas no portables, mueren cuando muere su sistema operativo.
  • Los programas privativos, mueren cuando muere su empresa.
  • Esto no pasa con EMACS. Emacs tiene ya 35 años de edad, y seguirá vivo otros 30 !!
  • Emacs es portable
  • Emacs es software libre.

6.2 Belleza vs eficiencia

  • Emacs se basa en la eficiencia y no en la belleza.
  • Un restaurante que sirve comida para 100 personas cada noche, no tiene una cocina bonita, sino una cocina industrial.

Un lugar práctico donde trabajar rapido y ser eficiente.

  • Aprender Emacs te puede llevar varias semanas de estudio y práctica. Quizas un mes si le dedicas varias horas diarias y te centras en ello.
  • El resultado de tu esfuerzo es que Emacs te ahorrá minutos diariamente, y esto

supondrá horas, y dias a largo plazo.

  • Es una inversión de tiempo, con una contraprestación enorme.

6.3 Porque emacs ha sobrevido

Es un editor con mucha potencia.

Puede hacer muchas mas cosas que un simple editor.

Puedes realizar el 90% de tus tareas diarias sin salir de Emacs.

Puedes personalizarlo

Puedes crear funciones nuevas con su lenguaje de extesion LISP

6.4 ¿ Hace falta se programador para usar emacs ?

No, hace falta saber programar. Emacs lo puedes usar desde GNU/Linux, Ms Windows o Mac OS X. Solo hace falta ganas y confiar en que el esfuerzo valdrá la pena.

7 Que es editar

  • Abrir y cerrar archivos
  • Cambiar de buffer,Dividir pantalla
  • Transponer caracteres o palabras,Dar formato ( mayusculas, minusculas, negrita, cursiva, … )
  • Moverse por el texto.
  • Reordenar contenidos
  • Buscar,Buscar y reemplazar
  • Corregir ortografia

Todo sin mover las manos del teclado y en una zona muy centrada. casi sin levantar las muñeca. esto es emacs !!

8 Ayuda de emacs

  • Pulsar F1 y seguir las indicaciones
  • Emacs cuenta con funcion de autocompletado. Si tienes dudas ejecutando algun comando en el mini-buffer

pulsa TAB o SPC para obtener una lista de funciones ( que comiencen por los caracteres que has insertado ).

  • Emacs fue diseñado para funcionar con cualquier teclado ( no como Apple que cuenta con teclas propios, o Microsoft Windows con su tecla propia ).
  • Emacs funciona con dos teclas de cambio ( Control y Meta (en los teclados ordinarios la tecla Meta es alt-izquierda o ESC ))

8.1 Que hacer en caso de emergencia

C-/ C-g ( Aborta la ejecución actual ) C-x C-g ( Resetea la linea de comandos )

9 Ejecucion emacs

Desde terminal : emacs fichero.txt

Desde entorno visual : alt+f2 emacs

10 Emacs y la pantalla

Haciendo uso de Emacs con un sistema GUI, Emacs ocupa una ventana.

Haciendo uso de una terminal -> Ocupa toda la pantalla.

Se usa el termino "frame" para hacer referencia a una ventana de Emacs.

Puedes crear tantos frames como desees

Para aumentar o disminuir el texto ( zoom ) puedes usar C-x C+,-

10.1 Centrar la pantalla y el cursor ( Recentering )

Centrar el cursor en la pantalla - C-l

Es muy util poder llevar la pantalla y el cursor al centro de la pantalla para inclinar el cuello.

Si pulsas dos veces C-l conseguirás llevar el cursor y la pantalla a la parte superior de tu pantalla, y poder así seguir insertando contenidos !

11 Insercion de datos en emacs

Emacs esta diseñado primordialmente para usarlo con un teclado. Aunque puedes usar el raton para ciertas cosas. Cuando usas el raton con Emacs, pierdes eficiencia.

12 Ficheros y backups

Como realiza Emacs los backups : https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup.html#Backup

En casi todos sistemas operativos, sobreescribir un archivo, destruye su contenido. Emacs hace lo mismo ( sustituye un el antiguo contenido por el nuevo ( el contenido del buffer )), con la salvedad ( excepción ), que antes realizar una copia ( backup ) del archivo original.

  • ¿ Cuando realiza esta copia ? La primera vez que realizas un guardado desde el buffer hacia el archivo.
  • ¿ Cuando realiza de nuevo esta copia ? Cuando cierras el buffer ( C-x k ), y lo abres de nuevo.
  • Los backups se nombran de la siguiente forma : Ejemplo : fichero.c~ , notas.txt~

    La variable "version-control", dependiendo de su valor, realizará 1 solo backup o backups numerados ( fichero.c~1~, fichero.c~2~, … ). Por defecto el valor de la variable es "nil", que indica "falso", Y hara siempre backups unicos, a no ser que existan ya backups numerado. Esta funcionalidad puede ser util, si queremos tener un control de versiones, sin necesidar de usar la complejidad de GIT y/o al tratarse un unico archivo o proyecto pequeño.

12.1 Ficheros comprimidos - .tar , .tar.gz

Emacs es tan potente que puede incluso ver el contenido de archivos empaquetados con TAR, o comprimidos con GZip. Puedes navegar el archivo comprimido para ver su contenido.

Podras includo crear archivos nuevos dentro o borrar archivos. ( El modo es : M-x auto-compression-mode )

Nota : Estudiar el modo "Dired" para saber manejarse en este modo. ( no todos los comandos de Dired funcionaran, pero sí los más importantes ).

13 Guardados automaticos en emacs

Emacs guarda cada cierto tiempo, cada archivo visitado ( buffer ) en un archivo aparte.

Este archivo viene indicado de la siguiente forma #archivo-autoguardado# ( entre # ).

Los archivos de auto-guardado con archivos independientes a : el propio buffer y el backup realizado por Emacs del propio archivo.

Es decir : Emacs en una herramienta excepcional para no perder información. Mucho mas seguro que trabajar directamente sobre un archivo.

14 Comandos en emacs

Algunos comandos en Emacs son invocados con un solo evento. Por ejemplo C-f.

Otros requieren dos por ejemplo C-x C-c

Hay comandos prefijo, que son necerios para insertar otros comandos.

Estos son por ejemplo C-x, C-c, C-h , ESC,

15 Teclas y comandos

Emacs no asocia sentido a teclas directamente. Sino sentido a comandos, y luego atajos ( key bindings ) de teclado a los comandos.

Cada comando es nombrado por el programador como unas palabras descriptivas de su funcionalidad separadas por guiones, por ejemplo next-line, forward-word, y luego se asocian el atajo de teclado para invocar a este comando.

Los keymaps, son las tablas que realizan esta asociacion de atajo de teclado a comando.

16 Emacs mini-buffer

El mini-buffer es donde Emacs leer los argumentos complejos, como nombres de archivo.

Igualmente se pueden ejecutar comandos por su nombre ( no por su atajo de teclado ). A veces vale la pena ejecutarlos por su nombre, buscandolos desde el mini-buffer. Una vez aprendidos podemos buscar su key binding, shortcut, o atajo de teclado.

Muchos comandos de Emacs no tienen atajos de teclado, así que la unica forma de ejecutarlos, es por su nombre.

Por convención los comandos estan formados por una o mas palabras separadas por guiones, muy descriptivas de lo que le comando realiza.

Para ejecutar cualquier comando por su nombre M-x nombre-comando <RET>

El mini-buffer de Emacs cuenta con un funcionalidad de guardado "historial".

Puedes acceder a comandos previos insertado usando las teclas de cursor ( arriba / abajo ).

17 Argumentos - repeticion de comandos

En la terminalogia de matematicas y computación, argumento quiere decir "datos provistos para una funcion u operacion"

Algunos comandos interpretan el argumento con repeticion, por lo que podemos ejecutar un comando varias veces . Ej: M-5 C-n ( ejecutará veces C-n ( el cursor avanzará lineas ).

18 Seleccion de texto

C-SPC

19 Copiando y pegando

En el listado de comandos de este tutorial puedes aprender todo lo relacionado con el borrado, cortado, copiado y pegado de texto.

En emacs a esto se le denomina ( deleting, killing and yanking ).

FUNCIONALIDAD ESPECIAL EMACS

En Emacs existe una fucionalidad especial para cortar, copiar y pegar texto.

En vez de hacer uso del "killring" donde todo el texto se va almacenando como una pila y donde realmente solo recordamos el ultimo texto cortado o copiado.

Podemos usar un buffer de apoyo, para ir copiando y pegando todo el texto de forma mas organizada y visual ( esto se denomina "accumulating text").

Fuente : https://www.gnu.org/software/emacs/manual/pdf/emacs.pdf ( pagina 84 )

  • M-x append-to-buffer

Append region to the contents of a specified buffer.

  • M-x prepend-to-buffer

Prepend region to the contents of a specified buffer.

  • M-x copy-to-buffer

Copy region into a specified buffer, deleting that buffer’s old contents.

  • M-x insert-buffer

Insert the contents of a specified buffer into current buffer at point.

  • M-x append-to-file

Append region to the contents of a specified file, at the en

Usando un buffer de apoyo ( propio, o creado por Emacs de forma automática si no existe ). Nos ayudará a poder manejar mucho mas texto. Y no solo texto inmediato

20 Fuentes

Listado de colores : M-x list-colors-display

21 Kill ring

Es un listado de bloques, que han sido previamente matados. Solo hay un kill ring, y es compartido por todos los buffers. Es posible matar un texto en un buffer y copiar en otro.

Por defecto tenemos un maximo de 60 bloques. Una vez llegado a 60 se comienza a sobreesribir el primero insertado .

22 Modos mayores y menores

Los modos mayores ( reconocimiento para cada tipo de texto ( plano, C, latex, lisp… ), son incompatibles entre sí. Son modos independientes. Podemos trabajar en un modo cada vez ( no al mismo tiempo ).

Los modos menores, sí nos permiten acumularlos ( trabajar con más de 1 activado ). Cada modo menor nos puede dar una funcionalidad. Por ejemplo trabajar con org-mode y enriched-mode, juntos.

23 Listado de comandos

Las teclas alternativas son Control y la etiqueta Meta ( Alt o Esc )

C = Control

M = Meta = Alt|Esc

23.1 Ejecutar emacs

Suspender emacs C-z Ejecutar emacs en segundo plano ( & ) Salir de emacs C-x C-c

23.2 Archivos

Leer / Visitar C-x C-f Guardar C-x C-s Guardar todo ( todos los buffers ) - C-x s Insertar archivo dentro del buffer actual C-x i ( para insertar un archivo dentro de otro )

23.3 Ayuda

Para obtener ayuda pulsar : F1 / C-h a ( dentro seguir los pasos ).

Pulsar Q para salir. Muy parecido al programa "man" de GNU/Linux

23.4 Recuperacion de error

Cuando nos vemos perdidos. Es importante saber donde esta el cursor.

Ver en que buffer o pantalla estamos

Abortar comando - C-x C-g - Reseteamos la linea de comandos, y podemos insetar un comando de nuevo.

Recuperar sesion M-x recover-session

Deshacer C-x C-u / C-/ - Es el undo. Deshace cambios 1 a 1. Es más cómodo usar el atajo C-/, es mucho más rapido.

23.5 Busqueda incremental

  • Buscar hacia adelante C-s. Luego insertamos la palabra a buscar. Para iterar sobre las coincidecias ir pulsando de nuevo C-s. Para salir pulsar ESC.
  • Control-g, tambien aborta,y es útil.
  • Buscar hacia atrás C-r
  • Hacer uso de expresiones regulares para realizar búsquedas, puede ser util ( comprobar simbolos de expresiones regulares )
  • Busqueda con expresiones regulares hacia adelante( *,? … ) - C-M-s
  • Busqueda con expresiones regulares hacia atras ( *,? … ) - C-M-r
  • Abortar busqueda : C-g

23.6 Moverse por el texto

  • Moverse caracter a caracter C-f C-b ( forward/backwards)
  • Moverse palabra a palabra M-f M-b
  • Siguiente linea C-n (next line)
  • Anterior linea C-p ( previous line )
  • Comienzo de linea C-a
  • Final de linea C-e (end line )
  • Pantalla anterior / Pantalla siguiente C-v M-v - Parecido a Apag, Repag
  • Principio / final de archivo ( M-<>
  • Ir a linea número X : M-g g - Tambien es como usar desde el mini-buffer, la funcion : goto-line, que es más facil de recordar.

23.7 Matando y borrando texto

  • Se pueden usar las teclas DEL y SUPR
  • Cortar linea - C-k
  • Matar texto ( killing ) - C-w - Comprobar funcionamiento - Se usa con regiones marcadas ( selecciones de texto (C-SPC para selecionar))
  • Copiar texto M-w
  • Pegar texto ( yanking ) - C-y

23.8 Seleccionando texto

Seleccionar texto para aplicarle un comando - C-SPC

23.9 Buscar y reemplazar

No confundir con el comando "buscar".

Buscar y reemplazar, busca y reemplaza. Tiene una funcion doble. No sirve para buscar.

Funcionalidad fundamental para poder buscar y reemplazar palabras a lo largo del texto.

M-%

Se pueden usar expresiones regulares para poder realizar una busqueda no concreta ( un patron ), mucho más potente.

Podemos invocar directamente a la funcion de busqueda y reemplazo, desde el mini-buffer.

M-x query-replace-regexp

23.10 Ventanas - manejando la pantalla

Dividir la pantalla horizontalmente - C-x 2

Dividir la pantalla verticalmente - C-x 3

Volver a tener una sola pantalla C-x 1

Saltar entre pantallas - C-x o ( other )

23.11 Formato

Indentar texto TAB

23.12 Fuente

Mayusculas - Convertir palabra a "uppercase" - C

Minusculas - Convertir palabra a "lowercase" - C

Texto capital - Convertir palabra a capital ( primer carácter en mayúsculas, resto en minúsculas ) - C-

23.13 Mini-buffer

Sirve para invocar a funciones directamente

Sirve para asignar valores a

23.14 Buffers

  • Buffers por defecto ( GNU EMACS,SCRATCH, BACKTRACE,MESSAGES)
  • Buffer de correo electonico ( se llama Rmail, que es en si el programa )
  • Saltar entre buffer con ventana dividida
  • Listar los buffers activos - C-x C-b
  • Cambiar de un buffer a otro C-x b
  • Matar un buffer ( cerrar un archivo ). C-x k ( kill )
  • Los buffers son archivos abiertos ( visitados mejor ).

23.15 Transposing

23.16 Revisando ortografia

M-$ Todo el buffer : M-x ispell-buffer

23.17 Etiquetas

23.18 Registros

23.19 Ejecutar emacs

  • Suspender emacs - C-z.
  • Ejecutar emacs en segundo plano - Desde la terminal con &
  • Salir de emacs - C-x C-c

23.20 Archivos

  • Leer / Visitar - C-x C-f
  • Guardar C-x C-s
  • Guardar todo ( todos los buffers ) C-x s
  • Insertar archivo dentro del buffer actual C-x i

23.21 Ayuda

Como obtener ayuda : F1 / C-h a

23.22 Recuperacion de error

  • Abortar comando - C-g
  • Recuperar sesion M-x recover-session
  • Deshacer C-x C-u / C-/

23.23 Busqueda incremental

  • Buscar hacia adelante C-s
  • Buscar hacia atrás C-r
  • Busqueda con expresiones regulares hacia adelante( *,? … ) - C-M-s
  • Busqueda con expresiones regulares hacia atras ( *,? … ) - C-M-r

Abortar busqueda : C-g

23.24 Moverse por el texto

  • Moverse caracter a caracter
  • Moverse palabra a palabra
  • Siguiente linea
  • Anterior linea
  • Comienzo de linea
  • Final de linea
  • Pantalla anterior / Pantalla siguiente ( C-v, M-v )
  • Principio / final de archivo M-<>
  • Ir a linea número X : M-g g

23.25 Matando texto - Copiar y Pegar

Se pueden usar las teclas DEL y SUPR

  • Matar texto ( killing )
  • Copiar texto
  • Pegar texto ( yanking )

23.26 Borrando texto

Podemos usar la tecla BACKSPACE ( borrar ), la tecla SUPR.

Podemos tambien usar atajos de teclado muy útiles para poder trabajar mucho más rapido :

C-k: Borra todo el contenido de la linea despues del cursor. M-d : Borra hasta el final de la siguiente palabra.

23.27 Insertar lineas en blanco

Además de la tecla RET para insertar nuevas lineas, podemos usar C-o que es más practico. Ya que inserta lineas en blanco moviendo el contenido ( pero no moviendo el cursor ). Y esto es mas comodo para no tener que llevar de nuevo el cursor, al lugar donde queremos seguir insertando texto.

24 Expresiones regulares

  • .cualquier caracter
  • *cero o mas repeticiones
  • *una o mas repeticiones
  • ?cero o una repeticion
  • [rango]
  • [capuchon excepcion de rango]

25 Autenticacion

Algunos paquetes ( funcionalidades ) de Emacs, hacen uso de "credenciales". Insertar cada vez estas credenciales ( usuario y contraseña ), puede ser una perdida de tiempo, por esto Emacs, guarda estas credenciales en los siguientes archivos.

~/.authinfo or ~/.authinfo.gpg or ~/.netrc.

Fuente : https://www.gnu.org/software/emacs/manual/htmlnode/emacs/Authentication.html#Authentication

26 Personalizacion

Cuando ejecutamos Emacs. Emacs ejecuta un archivo de configuracion ( init file ).

Este archivo si existe, especifica como inicializar Emacs para ti.

Puedes encontrar el archivo de configuracion en :

~/.emacs, ~/.emacs.el, or ~/.emacs.d/init.el;

Fuente : https://www.gnu.org/software/emacs/manual/htmlnode/emacs/Customization.html#Customization

27 Navegar por internet

Emacs Web Wowser( browser ;-)) : EWW

  • El paquete EWW de Emacs te permite esto.
  • Puedes usar TAB para saltar entre los links.
  • Puedes usar RET para entrar en en link.
  • Para ejecutar el navegador de Emacs, puedes hacerlo desde el mini-buffer :
  • M-x eww
  • M-x browse-url

Fuente : https://www.gnu.org/software/emacs/manual/htmlnode/emacs/EWW.html#EWW

28 Instalacion de paquetes

  • Emacs te permite descargar e instalar "paquetes" que implementan mejoras o nuevas funcionalidades para Emacs.
  • Estos paquetes los puedes instalar desde de un gestor de paquetes llamado : list-packages
  • Si ejecutas M-x list-packages, obtendras un nuevo buffer llamado Packages, que te listara todos los paquetes disponibles.
  • Desde este buffer, puedes instalar o desintalar cualquier paquete.
  • Estos paquetes estan mantenidos por los programadores de Emacs y hospedados por el proyecto GNU.
  • Una vez manejas bien Emacs, puedes hacer uso de algun paquete externo, que te solucione alguna necesidad interensante.
  • Algunos paquetes son enormes y requieren de estudio para poder manejarlos.

29 Funcionalidades extras

Todas las funcionalidades listadas a continuación, son extensiones de Emacs. Todas ellas tienen comandos propios para su manejo, aunque muchos de los comandos propios de Emacs funcionan igualmente.

El primer paso para ser eficiente en Emacs, es aprender primero Emacs. Luego funcionalidades externas. Cada funcionalidad requiere su tiempo de aprendizaje. Yo personalmente recomiendo org-mode, tramp y Rmail.

Rmail: Leer correo electronico.Leer grupos de noticias

ERC/Bitlbee: Participar en canales de chat IRC

Org-Mode : Manejar tu agenda. Editar textos de forma avanzada.Exportar a otros formatos.

Tramp : Editar archivos remotos por SSH / FTP

GNUS : Lector de correo y noticias - http://gnus.org/about.html

MAGIT: Gestion de control de versiones GIT para Emacs.

29.1 RMAIL - Correo electronico en emacs -

  • Ejecutarlo con M-x rmail
  • Puedes moverte por el texto del correo como en Emacs, pero Rmail te lo pone mas facil con la barra espaciadora.

Porque se usa mucho el scroll y ha merecido una asignacion de teclas propia. Moverse por el correo con SPC y shift SPC

  • Moverse al siguiente correo - usamos n / p ( no tiene en cuenta mensajes borrados.
  • Usamos M-n,p ( para tener en cuenta los mensajes borrados )
  • Borrar correos con d

Especificar que buzon queremos leer.Los buzones normalmente estan ubicados en /var/mail/usuario

M-x set-rmail-inbox-list

Nuevo correo : C-x m o usar M-x rmail-mail

Enviar correo : C-c C-s

Responder correo : C-x r (rmail-reply)

Reenviar correo : C-x f (rmail-forward)

Correo siguiente y previo : SPC, Shift + SPC

Estando dentro de Rmail, podemos usar directamente "m" para nuevo correo, "r" para responder ( reply ), "f" para reenviar ( forward ), "d" para borrar ( delete ), y "x" para purgar ( expunge ).

Nota al realizar el borrado y el purgado ( expunge de correos electronicos ), debes guardar el archico RMAIL al salir, para guardar los cambios, y no volver a tener de nuevo los correos borrados y purgados.

Movemail https://www.gnu.org/software/emacs/manual/htmlnode/emacs/Movemail.html Programa escrito en C, que copia los mensajes del buzon de correo al archivo Rmail.

Hay dos versiones del programa. Una de forma nativa que viene con Emacs, y otra adicional llamada GNU mailutils ( que cuenta con la funcionalidad de poder realizar la conexion y copiada de buzones IMAP. El movemail nativo de Emacs, solo puede acceder a buzones POP3.

proto://[user[:password]@]host-or-file-name

proto puede ser : mbox,mh,maildir,file,pop,imap.

Summarize : Esto es muy útil. En vez de ver cada correo independiente a pantalla completa, puedes verlo como una lista, al estilo ThunderBird. Con columnas de fecha, remitente, asunto, etc… De esta forma puedes ver mucho mejor tu correo.

Puedes usar "h" para ver tus correos en modo "resumen / summarize ".

PROBLEMAS ENCONTRADOS

1.Primer problema

En mi caso por error ( usando IMAP ) y confiando en la descarga de los correos desde mi buzón de correo personal, al archivo RMAIL, realizaria una copia de los correos. Una vez finalizado el proceso me doy cuenta, de que NO. Me ha borrado los correos elctrónicos del servidor, y los ha almacenado todos en el archivo RMAIL. Este proceso no es reversible porque la funcion Mailutils Movemail, realiza este proceso y seguramente no el contrario ( volver a ubicar una copia de los correos en el servidor remoto ). Ahora tengo que buscar una opción para poder volver a tener los correos en ambos sitios ( RMAIL y servidor remoto ).

Para evitar esto en el archivo de configuracion .emacs, debes poner lo siguiente :

;; Configure IMAP

(setq rmail-preserve-inbox t)

La variables rmail-preserve-inbox a TRUE ( indicado por una "t"). De esta forma, realiza el copiado de los mensajes desde el servidor a tu archivo RMAIL, pero mantiene copia en el servidor.

SOLUCIONADO : Gracias al manual oficial de RMS, compruebo que existe un nuevo campo ( mail header field ), llamad FCC, que es donde podemos indicar el nombre del archivo donde se guardarán los mensajes enviados, uno tras o otro en orden secuencial. > Ahora todos los mensajes enviados de Rmail se guardaran al menos de forma local en un archivo. ( siguiente paso que se guarden en servidro remoto carpeta IMAP "sent". Esta funcionalidad está pendiente de programar.

CITING EMAIL : Cuando he tenido correspondencia con otro usuario de RMAIL en Emacs, me encuentro que contesta a mi propio mensaje por trozos, sobre mi propio mensaje ( lo cual es muy útil ). Siempre viene indicado con el símbolo > .

Hasta ahora con el intento de emular este comportamiento y estilo, escribia directamente este mismo simbolo con su mensaje original. Ahora tras comenzar a leer el manual oficial, descubro que esto es una funcionalidad de Emacs, llamada "citing email".

FIRMA DEL MENSAJE.

crear archivo en directorio de usuario, e insertar dentro lo que queramos aparezca como firma.

meta + x message-insert-signature.

~.signature

2.Segundo problema

Recibo un error 553 al enviar correo electronico. Y la configuración SMTP dada de alta en .emacs, no funciona.

solucion : insertar en el archivo de configuracion estas dos variables. (setq user-full-name "Javier Sepulveda") (setq user-mail-address "direccion de correo electronico ")

De esta forma se evita recibir el error 553.

CONFIGURACION SMTP DEL ARCHIVO .emacs

Esta configuracion es la configuracion para hacer uso de un servidor SMTP externo ;; Configure SMTP (setq send-mail-function 'smtpmail-send-it) (setq smtpmail-smtp-server "post.uv.es") (setq smtpmail-smtp-service 587)

Configuracion IMAP

;; Configure IMAP (setq rmail-primary-inbox-list (list "imap://usuario@servidor")) (setq rmail-movemail-variant-in-use 'mailutils) ;;(setq rmail-remote-password-required t) (setq rmail-preserve-inbox t)

ENVIAR MENSAJE CON ADJUNTO

C-c RET f Luego elegir el fichero, Responder preguntas y RET.

ENCRIPTACION DE MENSAJES CON GNUPG

No hace falta importar de nuevo tus claves privadas a Emacs. Emacs las coge directamente de su ubicacion ".gnupg/…"

No have falta importar ninguna clave publica de ninguno de tus contactos ( tu keyring ). Emacas lo coge igualmente de tu sistema y directorio de usuario. ( ~/.gnupg )

En Emacs puedes encriptar partes de un mensaje. No hace falta encriptar el mensaje en su totalidad.

Comandos

C-c RET C-C ( encripta mensaje entero )

C-c RET C-p C-C ( encripta una parte del mensaje . podremos mover este identificador de encriptacion y nos podrás ser util para poner encabezados, o encriptar solo la informacion confidenicial. Por ejemplo cuando enviamos una contraseña )

29.1.1 Como obtener correo de buzones remotos

Accediendo a buzon POP3 :

Insertar la siguiente configuracion, en archivo de configuración .emacs :

(setenv "MAILHOST" "pop3server") (setq rmail-primary-inbox-list '("po:username") rmail-pop-password-required t)

Accediendo a buzon Imap :

Requisito : Tener instalado previamente en tu distribucion GNU/Linux el paquete mailutils https://packages.debian.org/stretch/mailutils

El metodo de acceso a buzones remotos por IMAP solo es posible con Mailutils MoveMail ( no solo con el MoveMail de GNU Emacs ).

imap://username[:password]@hostname

Los parametros entre corchetes son opcionales ( el password ). En caso de no poner este parametro adicional, Rmail te preguntará por el password.

Insertar configuracion en archivo de configuracion .emacs para CONEXION IMAP :

;; Configure IMAP (setq rmail-primary-inbox-list (list "imap://jdash@mail.cs.uoregon.edu")) (setq rmail-movemail-variant-in-use 'mailutils) (setq rmail-remote-password-required t) ;; Configure SMTP (setq send-mail-function 'smtpmail-send-it) (setq smtpmail-smtp-server "mail.cs.uoregon.edu") (setq smtpmail-smtp-service 587)

Fuente : https://systems.cs.uoregon.edu/wiki/index.php?n=Help.EmailEmacsRMAIL

29.2 ORG-MODE - Tratamiento avanzado de texto

Definicion original del programdor : Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.

Replicar anidamiento - M-RET

  • MOVER TODO EL TEXTO DE UN BLOQUE COMPACTADO ES MUY UTIL PARA REORDENAR TU INDICE DE CONTENIDOS *

Mover bloque arriba/abajo - M-S-cursor arriba/abajo

29.2.1 Funcionalidades de org-mode

  • Creacion de encabezados
  • Navegar facilmente por encabezados ( plegarlos y desplegarlos ).
  • Tareas TODO
  • Agenda
  • Calendario
  • Tablas
  • Enlaces
  • Etiquetas
  • Bookmarks
  • Fecha/Hora ( timestamps )
  • Exportacio

Atajo útil :

Plegar todo : C-u C-u TAB Desplegar todo: C-u C-u C-u TAB

29.2.2 Formato basico con org-mode

bold, italic, underlined, verbatim and code, and, if you must, ‘+strike-through+’.

5 guiones serán exportados como una <HR> de html ( horizontal rule )

Negrita * ( asterisco )

Cursiva / ( barra )

Tachado -tachado- ( guiones )

Verbatin ( operador = )

29.2.3 Tablas

Para comenzar cualquier tabla en ORG-MODE comenzaremos delimitando los campos por barra vertical ( operador OR )

CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 4
text text text text
       

ORG-MODE - Conceptos basicos para la creacion de tablas org- mode

  • Crear tablas con simbolo OR
  • Usar el TAB para moverse
  • Usar S-TAB para moverse celda anterior
  • Usar el intro para moverse hacia abajo

Funcionalidades interesantes

  • DESPLAZAR columna M-cursor derecha/izquierda
  • DESPLAZAR fila - M-S-cursor arriba/abajo
  • ORDENAR fila / columna
FUNCION COMANDO
Desplazar fila M-S-arriba/abajo
Desplazar columna M-derecha/izquierda
Borrar fila M-S-arriba
Borra columna M-S-izquierda
Insertar nueva fila M-S-abajo

29.2.4 Calendario

M-x calendar

Usa controles similiares para moverse por el calendario que los comandos para moverse por el texto.

Moverse por meses < > ( mismo comando que principo/final de archivo )

Otras funciones

calendar-goto-date calendar-goto-day-of-year calendar-goto-month calendar-goto-today

29.2.5 Agenda

La agenda de org-mode es muy útil y sencilla de manejar.

Tiene relacion directa con las tareas TODO, asociadas a una fecha ( deadlin

Desde el mini-buffer con M-x podemos invocar a funcionalidades de la agenda escribiendo en el minibuffer : org-agenda, y tendremos todas las opciones de agenda.

Luego ya es un tema de ir estudiando las opciones que nos puedan interesar más.

29.2.6 Tareas - todo list

Cambiar de estado C-c C-t ( TODO,DONE … )

  1. TIMESTAMPS
    1. TODO ejemplo de tarea pendiente

      Asignar fecha-hora ( timestamp ) límite ( DEADLINE ) - C-c C-d ( elegir fecha en calendorio ). Asignar fecha-hora ( timestamp ) ( SCHEDULED ) C-c C-s Insertar fecha C-c .

    2. TODO ejemplo de tarea con fecha simple <2019-08-09 vie>
    3. TODO ejemplo de tarea pediente con fecha limite
    4. TODO ejemplo de tarea pendiente con fecha en agenda

29.2.7 EXPORTAR

Contenidos con emacs ( org-mode )

C-c C-e

29.3 TRAMP - Conexion archivos remotos ( tramp )

La funcionalidad de TRAMP es lo que mas potencia da al editor EMACS. La capacidad de poder "visitar" un archivo remoto por ssh y poder modificarlo desde tu PC cliente con tu configuración por defecto de Emacs.

No hace falta que Emacs este instalado en el servidor destino.

Si tienes permisos podras visitar el archivo y aplicarle cambios. Todo esto de forma rapida y en modo texto, sin necesidad de ninguna infraestructura especial. Ademas es seguro porque puedes incluso visitar estos archivos en modo lectura por lo que no podras realizar cambios ( C-x C-r ) - Equivalente a : find-file-read-only

EMACS WIKI TRAMP MODE

Siglas de TRAMP ( Transparent Remote Access, Multiple Protocols )

Documentacion oficial de TRAMP : https://www.gnu.org/software/tramp/

Para poder hacer uso de nuestra instalación de Emacs desde GUI, con nuestra configuración habitual ( paquetes instalados ), podemos realizar una conexion de SSH desde nuestro PC local a un servidor remoto ( nota : este servidor no necesita contar con ningun tipo de servicio especial ( sí servidor SSH ), o instalacion del programa Emacs.

Es una forma llamada "tramp" y consiste en abrir una conexion ssh, directamente desde nuestro Emacs bajo entorno visual. Este metodo tiene muchas ventajas. Listo las posibles opciones para poder uso de Emacs en un archivo remoto.

1.Abrir emacs directamente desde la maquina remota : emacs fichero.txt

2.Invocar desde la terminal de cliente : emacs -X usuario@maquina

3.Abrir Emacs, y desde dentro de emacs, aperturar conexion ssh de la siguiente forma : C-x C-f /ssh:usuario@maquina:/ruta/fichero.txt

En el metodo 3 podemos ( si no conocemos la ruta ), pulsar TAB y establecer la conexion SSH, Emacs nos mostrará un listado de archivos ( dir red ) contenidos en el directorio home del usuario conectado.

Avanzado : Como editar un archivo donde el propietario no es el propio usuario de conexion, sino root. Para hacer esto tenems que establecer la conexion ssh como root ( si el servidor remoto lo permite ( que no debería ), de la siguiente forma : sudo::/directorio/fichero.txt

  1. comandos tramp
    1. Conexion a servidor remoto

      C-x C-f /remotehost:filename RET /method:user@remotehost:filename

    2. Edición de archivos como superusuario :

      C-x C-f /su::/etc/hosts C-x C-f /sudo::/etc/hosts

  2. Usando Tramp como superusuario ( su, sudo y sg ).

    A veces es necesario trabajar en la maquina remota como superusuario ( para disponer de los permisos necesarios para poder editar ciertos archivos o leer ciertos directorios ).

    Para esto usaremos el metodo de conexion su o sudo.

    /ssh:usuario@servidor sudo::/ruta/archivo

29.4 GIT - Control de versiones en emacs con git ( magit )

Magit - Emacs version control with GIT

El manejo de Magit, no es el objetivo de este tutorial. Puedes visitar el sitio oficial de Magit, para aprender como manejarlo ( aviso : debes saber antes GIT para aprender Magit ).

El comportamiento de Emacs puede ser más personalizado aún utilizando los "modos menores" ("minor modes"). Mientras que sólo se puede asociar un modo mayor con un buffer a la vez, se puede tener activos varios modos menores. Por ejemplo, el modo mayor para el lenguaje de programación C define un modo menor diferente para cada uno de los estilos de indentación más populares.


Licencia : Creative Commons Attribution-ShareAlike 4.0 International License.

Autor: Javier Sepulveda

30 Registros

Los registros en Emacs son compartimentos donde guardar algo. Podemos guardar texto, rectangulos, posiciones y otras cosas para usarlas depues. Lo bueno de los registros es que una vez guardado "algo" dentro de un registro, podemos pegarlo tantas veces como queramos ( y no como si fuera parte del kill ring donde solo podríamos pegarlo una sola vez ).

Cada registro tiene un nombre, que consiste en un solo caracter. Incluso podria llamarse como un caracter no alfanumerico como podria ser "*".

Sea lo que sea guardes en un registro, solo puede ser una cosa cada vez.

Veamos como guardar texto :

Seleccionamos un trozo de texto. Luego pulsamos C-x r x s, que quiere decir : registro, lo llamaremos x y "save".

O por ejemplo C-x r 5 s ( que querra decir registro, llamado 5 y guardar.

Mas avanzado es guardar en registros : posiciones, numeros, configuraciones de ventanas o nombres de archivo.

31 Calendario y diario - Seccion especial

M-x calendar

Moverse :

C-f : forward , dia adelanta C-b : backwards, dia hacia atras C-p : previous, semana atras C-n : next, semana adelante M-{ : mes M-} : mes C-x] : año C-x[ : año …

Ir al principio de :

Semana,mes,año

C-a,C-e M-a,M-e M-<,M->

Ir a fechas especificas:

g hace referencia a "go"

Asi que :

g d : ir a fecha concreta

DIARIO

Para poder hacer uso del diario, comprueba que tienes creado el fichero "diary" en el directorio .emacs.d de tu usuario el archivo diary

Ejemplo :

user@host:~/.emacs.d$ diary

Para que sirve el diario :

Para llevar la agenda de cada dia, con tus compromisos, reuniones y tareas.

Cada entrada del archivo "diary" graba un evento asociado a la fecha y puede cosistir en una o más lineas. Siempre comienza con la fecha y a continuación los detalles de la entrada. Por ejemplo

Jan 14, 2020 Publicacion de faq.valenciatech.com como nueva seccion

Si el evento constan de mas de una linea de texto, la siguiente linea comenzara con un espacio en blanco.

31.1 Mostrando el diario

d : muestra todas las entradas para una fecha s : muestra todo el contenido del fichero "diary" m : marca todas las fechas que contienen eventos u : desmarca el calendario de la ventana

31.2 Insertando contenido en el diario

i d : insertar en dia i w : insertar en dia de la semana i m : insertar en dia de mes i y : insertar en dia de año

32 CONFIGURACIONES .emacs utiles

32.1 Desactivar scroll, barra herramientas, y menu.

To disable the menu bar, place the following line in your .emacs file: (menu-bar-mode -1) To disable the scrollbar, use the following line: (toggle-scroll-bar -1) To disable the toolbar, use the following line: (tool-bar-mode -1)

33 OBJETIVOS 2020 Y NUEVAS SECCIONES

SEGUIMOS TRABAJANDO EMACS - OBJETIVOS 2020 - EMACS LISP

Author: Javier Sepulveda

Created: 2020-01-14 mar 14:42

Validate