Emacs (Español)

From ArchWiki

Emacs es un editor de pantalla en tiempo real, extensible, personalizable y auto documentado. En el núcleo de Emacs se encuentra un intérprete de Emacs Lisp, el lenguaje en el que se implementa la mayor parte de la funcionalidad incorporada las extensiones de Emacs. GNU Emacs utiliza GTK como su conjunto de herramientas X, aunque funciona igualmente bien en un entorno de interfaz de línea de comandos (CLI).

Instalación

Install uno de los siguientes paquetes:

Se pueden buscar otras variantes, como ejemplo emacs-gitAUR proporciona la rama de desarrollo de GNU Emacs.

Uso

Antes de iniciar emacs, debes saber cómo cerrarlo (especialmente si lo ejecutas en un terminal); usa el Ctrl+x o Ctrl+C en la terminal.

Para iniciar Emacs ejecuta:

$ emacs

o, para usarlo desde la consola:

$ emacs -nw

o, para carga rápida (sin .emacs) y edición dentro de CLI:

$ emacs -Q -nw

Si instaló la versión nox, emcas y emacs -nw serán iguales.

También se puede proporcionar un nombre de archivo para abrir ese archivo inmediatamente:

$ emacs nombre_fichero.txt

Sin colores

De forma predeterminada, Emacs comienza con un tema de color que muestra hipervínculos en azul oscuro. Para iniciar Emacs en un terminal de texto sin ningún tema o esquema de color:

$ emacs -nw --color=no

Esto hará que todo el texto aparezca con el color de primer plano de la terminal: normalmente de color blanco sobre fondo negro o texto negro sobre fondo blanco.

Como un demonio

Para evitar recargar el archivo de configuración de Emacs cada vez que se inicia Emacs, puede ejecutar Emacs como un demonio:

$ emacs --daemon

Luego puede conectarse al demonio ejecutando:

$ emacsclient -nc

Lo cual crea un nuevo marco -c (use -t si prefieres usarlo en el terminal) y no acapara la terminal -n (--no-wait). Tenga en cuenta que algunos programas como Mutt o Git (para mensajes de confirmación) espera a que finalice el editor, por lo que no puede utilizar el parámetro -n. Si su editor predeterminado está configurado para usarlo, tendrá que especificar un editor alternativo (p. ej. emasclient -a "" -t) para esos programas.

Como unidad systemd

Se incluye una unidad systemd en Emacs 26.1. La unidad se instala con Emacs, pero debe estar habilitada como una unidad de usuario (no para todo el sistema) después de instalar Emacs.

Una vez iniciado el servicio, Emacs está listo.

Si desea poder iniciar marcos gráficos de emacs a través de emacsclient en Wayland, se necesita un fragmento directo específico, como se muestra en EmacsWiki.

Tenga en cuenta que las unidades de usuario de systemd no heredan las variables de entorno de un shell de inicio de sesión (como ~/.bash_profile). Consulte Systemd/User#Environment variables para obtener más información.

Si inicia emacs como un demonio, es posible que desee configurar las variables de entorno VISUAL y EDITOR en emacsclient para que los programas que inicien un editor utilicen emacsclient en lugar de iniciar una nueva instancia completa del editor. Los programas que utilizan un editor externo incluyen programas de correo electrónico (para editar el mensaje), Git (para editar el mensaje de confirmación) y less (el comando v para editar el archivo mostrado). No utilice la opción -n (--nowait) para emacsclient, ya que los programas normalmente esperan que la edición finalice cuando se cierra el editor.

También se recomienda cambiar cualquier entrada del menú de inicio de la GUI (o equivalente) para que Emacs apunte a emacsclient en lugar de emacs, de modo que se utilice el demonio de emacs en lugar de iniciar un nuevo proceso de emacs.

Obteniendo ayuda

Emacs tiene un tutorial incorporado al que se puede acceder haciendo clic en el primer enlace en la pantalla de inicio y seleccionando Help>Emacs Tutorial en el menú o presionando C-h t.

Para leer el tutorial en un idioma que no sea inglés, use el comando Alt x e ingrese help-with-tutorial-spec-language

Emacs se autodocumenta por diseño. De este modo, se dispone de una gran cantidad de información para determinar, por ejemplo, el nombre de un comando específico o su combinación de teclas. Vea todos los enlaces de ayuda contextual con C-h C-h.

Emacs también incluye un conjunto de tarjetas de referencia, útiles tanto para principiantes como para expertos, consulte /usr/share/emacs/versión/etc/refcards/.

Manuales

Si realmente quieres dominar Emacs, la fuente de documentación más recomendada siguen siendo los manuales oficiales:

  • Emacs: el manual de usuario completo de Emacs.
  • Preguntas frecuentes sobre Emacs.
  • Introducción a Emacs Lisp: si nunca antes has utilizado ningún lenguaje de programación.
  • Elisp: si ya estás familiarizado con algún lenguaje de programación.

Puede acceder a ellos como archivos PDF desde GNU.org o directamente desde el propio Emacs gracias al lector de 'información' integrado: C-h i . Presione m para elegir un libro.

Algunos usuarios prefieren leer libros usando 'info' debido a sus convenientes atajos, sus párrafos se adaptan al ancho de la ventana y la fuente se adapta a la resolución actual de la pantalla. A algunos les resulta menos irritante para los ojos. Finalmente, puedes copiar fácilmente el contenido del libro a cualquier buffer de Emacs, e incluso puedes ejecutar fragmentos de código Lisp directamente desde los ejemplos.

Quizás quieras leer el libro Info para saber más al respecto: C-h i m info RET. Presione ? mientras está en el modo de información para obtener una lista rápida de atajos.

Configuración

Una de las principales características de Emacs es su extensibilidad y facilidad de configuración. Emacs tiene un motor de personalización incorporado. Puede hacer M-x personalizar que muestra una lista de opciones de personalización. Para saber cómo utilizar esta interfaz, consulte el nodo de información de Fácil personalización: (info '(emacs) Fácil personalización'). Puede configurar aperturas de personalización solo para una sesión de Emacs o guardarlas en un archivo de configuración para que se guarden en todas las sesiones de Emacs. Tenga en cuenta que esto es lo que hace la interfaz de personalización si selecciona Aplicar y guardar.

Cuando se inicia Emacs, normalmente intenta cargar un programa Lisp desde un archivo de inicialización, o archivo de inicio para abreviar. Este archivo, si existe, especifica cómo inicializar Emacs por usted. Emacs busca su archivo de inicio en /.emacs, /.emacs.el,/.emacs.d/init.el, o /.config/emacs/init.el . Consulte el nodo de información Archivo de inicio para obtener más información: (info '(emacs) Archivo de inicio')

Consejos y trucos

TRAMP

TRAMP (Transparent Remote Access, Multiple Protocols|Acceso remoto transparente, protocolos múltiples) es una extensión que, como su nombre indica, proporciona acceso transparente a archivos remotos a través de varios protocolos. Cuando se le solicite un nombre de archivo, al ingresar un formulario específico se invocará TRAMP. Algunos ejemplos:

Para solicitar la contraseña de root antes de abrir /etc/hosts con permisos de root:

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

Para conectarse a 'hostremoto' como 'tu' a través de SSH y abrir el archivo ~/example.txt:

C-x C-f /ssh:you@remotehost:~/example.txt

La ruta de TRAMP suele tener el formato '/[protocolo]:[[usuario@]host]:<archivo>'.

Para conectarse a 'myhost' como 'tú' y editar /etc/hosts con sudo:

/ssh:tu@hostremoto|sudo:hostremoto:/etc/hosts

TRAMP admite mucho más de lo que los ejemplos anteriores podrían indicar. Para obtener más información, consulte el manual de información de TRAMP, que se distribuye con Emacs.

Usando Emacs como git mergetool

De forma predeterminada, Git brinda soporte para usar el modo Emerge de Emacs como herramienta de combinación. Sin embargo, es posible que prefiera el modo Ediff. Desafortunadamente, Git no admite este modo por razones técnicas. Todavía hay una manera de usarlo evaluando algún código elisp al llamar a emacs.

.gitconfig
[mergetool.ediff]
    cmd = emacs --eval \" (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\"Merge buffer saved in: %s\\\" file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook 'kill-emacs ediff-quit-merge-hook 'ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
    
[merge]
	tool = ediff

Tenga en cuenta que el comando debe estar en una sola línea.

En el ejemplo anterior, lanzamos una nueva instancia de Emacs. Es posible que desee utilizar emacsclient para un inicio más rápido; Sin embargo, no se recomienda, ya que la llamada de Ediff no es realmente limpia: podría alterar su sesión actual de Emacs.

Si desea un inicio instantáneo, puede utilizar el parámetro -q. Si desea iniciar Emacs rápidamente y al mismo tiempo conservar al menos una parte de su configuración, puede llamar a Emacs con

emacs -q -l ~/.emacs-light

donde el archivo de configuración ligera carga solo lo que necesitas para Ediff.

Consulte kerneltrap.org y stackoverflow para obtener más detalles sobre este truco y el problema de Ediff.

Usar Bloq Mayús como tecla de control

A algunos usuarios les gusta este comportamiento para evitar el llamado "emacs pinky". Si quieres probarlo en X, simplemente ejecuta

$ setxkbmap -option 'ctrl:nocaps'

Alternativamente, para intercambiar estas claves, ejecute

$ setxkbmap -option 'ctrl:swapcaps'

Para configurar esto de forma permanente, considere agregarlo a su archivo .xinitrc.

Ahora, si alguna vez necesita escribir en mayúsculas una región, simplemente use la combinación de teclas predeterminada C-x C-u, que llama a la función upcase-region.

Consulte [1] para conocer un enfoque alternativo.

Si le falta la función Bloq Mayús, asígnela como "Shift" al mismo tiempo.

$ setxkbmap -option "shift:both_capslock"

Algunos entornos de escritorio incluyen herramientas gráficas para simplificar las reasignaciones de teclado. Por ejemplo, en Plasma 5 abra Configuración del sistema y haga clic en Dispositivos de entrada. Seleccione Teclado y en la pestaña Avanzado encontrará la configuración Comportamiento de Bloq Mayús bajo el cual puede seleccionar Bloq Mayús también es Ctrl.

Multiplexación de emacs y emacsclient

Abrir un nuevo archivo en la misma emacs-session requiere el uso de emacsclient. El comando emacs se puede empaquetar para hacer el trabajo más inteligente de abrir el archivo si la sesión existe.

Para iniciar la sesión necesita start-server. Este fragmento creará un servidor en la primera sesión de emacs. Agregue esto a su archivo de configuración emacs.

.emacs or .emacs.d/init.el
(require 'server)
(unless (server-running-p)
  (server-start))

El método de alias de Shell no es adecuado para esto ya que también necesita pasar variables o iniciar su propia sesión independiente. Agregue esto al .bashrc o cualquier archivo rc de su shell. Esto hará que su comando emacs se comporte como emacsclient si se pasa el argumento.

function emacs {
    if [[ $# -eq 0 ]]; then
        /usr/bin/emacs # "emacs" is function, will cause recursion
        return
    fi
    args=($*)
    for ((i=0; i <= ${#args}; i++)); do
        local a=${args[i]}
        # NOTE: -c for creating new frame
        if [[ ${a:0:1} == '-' && ${a} != '-c' && ${a} != '--' ]]; then
            /usr/bin/emacs ${args[*]}
            return
        fi
    done
    setsid emacsclient -n -a /usr/bin/emacs ${args[*]}
}

Si desea ejecutarlo en una nueva sesión, simplemente haga emacs file -.

Múltiples configuraciones

Puede usar varias configuraciones y decirle a Emacs que cargue una u otra.

Por ejemplo, definamos dos archivos de configuración.

.emacs
(load "~/.emacs.d/main" nil t)
(load "~/.emacs.d/functions" nil t)
(load "~/.emacs.d/modes" nil t)
(load "~/.emacs.d/plugins" nil t)
(load "~/.emacs.d/theme" nil t)

Esta es la configuración completa que cargamos para el demonio. Pero el archivo plugins es enorme y tarda en cargarse. Si queremos generar una nueva instancia de Emacs que no necesite las funciones de plugins, puede resultar engorroso cargarla cada vez a largo plazo.

.emacs-light
(load "~/.emacs.d/main" nil t)
(load "~/.emacs.d/functions" nil t)
(load "~/.emacs.d/modes" nil t)
(load "~/.emacs.d/theme" nil t)

Y ahora lanzamos Emacs con

emacs -q -l ~/.emacs-light

Puede crear un alias para facilitar la llamada.

Variables locales y personalizadas

Puede definir variables en su archivo de configuración que luego pueden modificarse localmente para un archivo.

(defcustom my-compiler "gcc" "Some documentation")

Ahora, en cualquier archivo, puede definir variables locales de dos maneras; consulte el manual para obtener detalles completos

  • Usando M-x add-file-local-variable-prop-line, que agrega una línea comentada al principio similar a:
// -*- mi-compilador:g++; modo:c++ -*-
  • O puedes usar M-x add-file-local-variable para agregar líneas cerca del final del archivo:
// Variables locales:
// mi-compilador: g++
// modo: c++
// Fin:

Tenga en cuenta que para que los valores surtan efecto, deberá llamar a M-x revert-buffer.

Las variables personalizadas se consideran inseguras de forma predeterminada. Si intenta abrir un archivo que contiene variables locales que redefinen variables personalizadas, Emacs le pedirá confirmación.

Puede declarar la variable como segura, eliminando así el mensaje de confirmación de Emacs. Debe especificar un predicado que cualquier valor nuevo debe verificar para que pueda considerarse seguro.

(defcustom mi-compilador "gcc" "Alguna documentación" :safe 'stringp)

En el ejemplo anterior, si intenta establecer más de una cadena, Emacs lo considerará inseguro.

Colores y tema personalizados

Los colores se pueden personalizar fácilmente utilizando la función face.

(set-face-background  'region                 "color-17")
(set-face-foreground  'region                 "white")
(set-face-bold-p      'font-lock-builtin-face t ) 

Puedes dejar que Emacs te diga el nombre del face donde está el punto. Utilice la función customizer-face para eso. La instalación le mostrará cómo configurar colores, negrita, subrayado, etc.

Emacs en consola puede manejar 256 colores, pero tendrás que usar un terminal apropiado para eso. Por ejemplo, URxvt admite 256 colores. Puede utilizar list-colors-display para obtener una lista completa de los colores admitidos. Esto depende en gran medida del terminal.

Ver también:

Compatibilidad con SyncTeX

Emacs es un potente editor LaTeX. Esto se debe principalmente al hecho de que puedes adaptar o crear un modo LaTeX que mejor se adapte a tus necesidades.

Aún así, puede haber algunos desafíos, como la compatibilidad con SyncTeX. Primero debes asegurarte de que tu distribución TeX lo tenga. Si instaló TeX Live manualmente, es posible que necesite instalar el paquete synctex.

# umask 022 && tlmgr install synctex

La compatibilidad con SyncTeX depende del espectador. Aquí usaremos Zathura como ejemplo, por lo que es necesario adaptar el código si desea utilizar otro visor de PDF.

(defcustom tex-my-viewer "zathura --fork -s -x \"emacsclient --eval '(progn (switch-to-buffer  (file-name-nondirectory \"'\"'\"%{input}\"'\"'\")) (goto-line %{line}))'\"" 
  "PDF Viewer for TeX documents. You may want to fork the viewer
so that it detects when the same document is launched twice, and
persists when Emacs gets closed.

Simple command:

  zathura --fork

We can use

  emacsclient --eval '(progn (switch-to-buffer  (file-name-nondirectory \"%{input}\")) (goto-line %{line}))'

to reverse-search a pdf using SyncTeX. Note that the quotes and double-quotes matter and must be escaped appropriately."
:safe 'stringp)

Aquí definimos nuestra variable personalizada. Si está utilizando el modo LaTeX predeterminado de AucTeX o Emacs, deberá configurar el visor en consecuencia.

Ahora abra un archivo fuente LaTeX con Emacs, compile el documento e inicie el visor. Zathura aparecerá. Si presiona Ctrl+Clic izquierdo Emacs debería colocar el punto en la posición correspondiente.

Resaltado de sintaxis para archivos systemd

Puede utilizar systemd-mode.

Alternativamente, puede simplemente decirle a emacs que coloree los archivos systemd (servicios, temporizador, etc.), agregando esto a su archivo de inicio:


 (add-to-list 'auto-mode-alist '("\\.service\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.timer\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.target\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.mount\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.automount\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.slice\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.socket\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.path\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.netdev\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.network\\'" . conf-unix-mode))
 (add-to-list 'auto-mode-alist '("\\.link\\'" . conf-unix-mode))

Soporte de portapapeles para emacs-nox

Para usar el portapapeles Xorg en emacs-nox, Instala xclip y agregue la siguiente función a /.emacs [2]

;; use xclip to copy/paste in emacs-nox
(unless window-system
  (when (getenv "DISPLAY")
    (defun xclip-cut-function (text &optional push)
      (with-temp-buffer
	(insert text)
	(call-process-region (point-min) (point-max) "xclip" nil 0 nil "-i" "-selection" "clipboard")))
    (defun xclip-paste-function()
      (let ((xclip-output (shell-command-to-string "xclip -o -selection clipboard")))
	(unless (string= (car kill-ring) xclip-output)
	  xclip-output )))
    (setq interprogram-cut-function 'xclip-cut-function)
    (setq interprogram-paste-function 'xclip-paste-function)
    ))
Tip: You may also enable terminal mouse support by adding:
;; xterm mouse support
(require 'mouse)
(xterm-mouse-mode t)

Ver también mwheel.el.

Paquetes

La funcionalidad de Emacs se puede extender con paquetes de terceros. El administrador de paquetes incorporado package.el es la forma oficialmente compatible de hacerlo, aunque hay varios otros gerentes de paquetes escritos por miembros de la comunidad Emacs. package.el se basa en la variable package-archives para encontrar paquetes. Por defecto, esto incluye el Emacs Lips Package Archive (ELPA). M-X List-Packages creará un búfer que enumera todos los paquetes que emacs conoce. El manual ((info '(emacs) Packages')[enlace roto 2024-01-13]) contiene mucha más información.

Se pueden agregar archivos de paquetes de terceros. El más utilizado de estos es Melpa.

Una serie de extensiones populares están disponibles como paquetes en los repositorios oficiales, y más aún, a través del AUR. El nombre de tales paquetes generalmente tiene un 'emacs-' prefix (por ejemplo, emacs-lua-mode), aunque no siempre (por ejemplo, auctexAUR).

Algunos paquetes pueden requerir que realice cambios en su archivo de configuración para activarlos para que sus características estén disponibles durante una sesión de emacs. Por ejemplo, si instala auctexAUR, deberá agregar

(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)

a su archivo de configuración. Para otros paquetes deben hacerle saber, a emacs, cómo activarlos en la sección de comentarios de su código fuente.

Solución de problemas

Fallo en inicio de EMACS con mensaje de error 'Undefined color: "WINDOW_FOREGROUND"'

Debe instalar el paquete mcpp o el paquete gcc. El preprocesador C cpp se utiliza para preprocesar X recursos por Xrdb. Si un preprocesador C no está instalado en el sistema, XRDB omita silenciosamente el preprocesador C y el símbolo Window_foreground no se expande a un código de color hexadecimal.

EMACS Systemd El servicio no se inicia cuando se usa GCCEMACS

Al usar GCCEMACS (la rama emacs-native-comp o pgtk-nativecomp) e intentando iniciar un servicio systemd para ello, un mensaje de error informando que un .eln no se encontró que se pueda registrar:

$ journalctl --user -xb -g eln
emacs[7507]: emacs: ../native-lisp/28.0.50-x86_64-pc-linux-gnu-fc9c33938bf279333039c28064d363e8/lisp-mode-410874a46ab8852855281f021ca61fe7-1738806322de892570d69dfc55b437c2.eln: cannot open shared object file: No such file or directory

Como una solución alternativa, editar la línea WorkingDirectory de emacs.service en la sección [servicio].

emacs.service
[Service]
...
WorkingDirectory=/usr/lib/emacs/28.0.50/x86_64-pc-linux-gnu/
...
Nota: El parámetro workingDirectory debe definirse antes un posible Restart.

Problemas en salida de los colores

Por defecto, el shell Emacs mostrará secuencias de escape en bruto utilizadas para imprimir colores. En otras palabras, mostrará símbolos extraños en lugar de la salida del color deseado.

Incluyendo lo siguiente en /.emacs modifica el problema:

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

Problemas que muestran caracteres en X windows

Si cuando comienzas emacs en X Windows, todos los personajes de la ventana principal son cajas blancas con bordes negros (los que ve si intentas ver caracteres para los que no tienes la fuente correcta instalada), debes instalar xorg-fonts-75dpi y/o xorg-fonts-100dpi y reiniciar X Windows.

Inicio lento

Tip: Para eliminar el tiempo de inicio, los usuarios pueden considerar ejecutar emacs #Como unidad systemd.

Los tiempos de inicio lentos a menudo son causados por una de estas dos cosas.

Para determinar cuál podría ser, ejecute emacs con:

$ emacs -q
  • Los errores, particularmente en /etc/hosts, a menudo darán como resultado un retraso de más de 5 segundos al comenzar las emacs. Consulte 'Establezca el nombre de host' en la Guía de configuración de red para obtener información.
  • Es posible que debas monitorear cualquier paquete de red enviado desde su ordenador (usando un programa como Wireshark) para ver si hay algún comportamiento extraño.
  • Una forma simple de buscar la causa es hacer comentarios (es decir, líneas de prefijo con ';') secciones sospechosas de sus /.emacs (o /.emacs.d /init.el) Luego comience emacs nuevamente para ver si hay algún cambio. Tenga en cuenta el uso de 'require' y 'load' pueden ralentizar el inicio hacia abajo, especialmente cuando se usa con extensiones más grandes. Por regla general, solo debería usarse cuando su objetivo es: necesario una vez que comience emacs o proporcionan poco más que 'autoloads' para una extensión. De lo contrario, use la función 'Autoloads' directamente. Por ejemplo, en lugar de:
    (require 'cualquier cosa)
    que pueda usar:
    (autoload 'anything "anything" "select anything"' t)

No puede abrir el archivo de carga: ...

La causa más común de este error es la variable de "ruta de carga" que no incluye la ruta al directorio dentro del cual se encuentra la extensión. Para resolver esto, agregue la ruta apropiada a la lista que se buscará antes de intentar cargar la extensión:

 (add-to-list 'load-path "/path/to/directory/")

Al intentar usar paquetes para extensiones y emacs se ha configurado con un prefijo que no sea /usr, la ruta de carga deberá actualizarse. Coloque lo siguiente en /.emacs antes de las instrucciones proporcionadas por el paquete:

 (add-to-list 'load-path "/usr/share/emacs/site-lisp")

Si compila emacs a mano, tenga en cuenta que el prefijo predeterminado es /usr/local.

Problema de acento muerto: '<dead-acute> is undefined'

Al buscar sobre este error en Google, encontramos este enlace: https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00167.html explicando el problema. La forma normal de usar las teclas de acento no funciona como se esperaba. Intentar acentuar una palabra como 'fiancé' producirá el mensaje anterior.

Una forma de resolverlo es simplemente colocar la línea a continuación en su archivo de inicio, /.emacs:

  (require 'iso-transl)

Y no, no es un error, sino una característica de las nuevas versiones de Emacs. Al leer los mensajes posteriores al respecto en la lista de correo, lo encontramos [3]:

Parece que nada se carga automáticamente porque hay una opción entre ISO-Transl e ISO-ACC. Ambos parecen proporcionar un método de entrada con el prefijo C-x 8 o Alt-<Accent>, pero lo que usted y yo estamos haciendo es presionar una tecla muerta (^, ´, `, ~, ¨) para el acento y luego otra clave para 'componer' el acento. ¡Y no se usa la tecla ALT en esto! Y según la documentación, parece apropiado para codificaciones de 8 bits, por lo que debería ser bastante inútil en UTF-8. Informé este error cuando se introdujo, pero el error parece estar clasificado como una característica ... tal vez es solo porque el archivo está cargado de automóviles aunque bastante inútil.

C-M-% y algunos otros enlaces no funcionan en emacs NOX

Esto se debe a que los terminales son más limitados que Xorg. Sin embargo, algunos terminales pueden manejar más enlaces que otras. Dos soluciones:


  • O use la versión gráfica,
  • o cambiar el enlace a uno compatible.

Ejemplo:

.emacs
(global-set-key (kbd "C-M-y") 'query-replace-regexp)

Emacs Hangs

Debido a su naturaleza única, muchas operaciones bloquean emacs. Esto podría suceder de algunas maneras. Por ejemplo, los emacs pueden estar esperando la entrada de usted (por ejemplo, ha abierto el minibuffer en un cuadro pero está tratando de trabajar en otro). Alternativamente, los emacs podrían estar ejecutando un código que simplemente lleva un tiempo terminar o tal vez te has encontrado con un error. Hay varias formas de tratar de desbloquear los emacs sin matar el proceso de emacs.

  • Intenta presionar C-g. Dependiendo de lo que esté haciendo Emacs, es posible que deba presionarlo varias veces.
  • Intenta presionar ESC ESC ESC.
  • Desde otro terminal, ejecutar killall -SIGUSR2 emacs

EMACS-Nox: La salida se vuelve desordenada

Cuando se trabaja en una terminal, el color, la sangría o cualquier cosa relacionada con la salida puede volverse una locura. Esto es (¿probablemente?) Porque Emacs recibió un carácter especial en algún momento que puede entrar en conflicto con la terminal actual. Si esto sucede, puede hacer M-X Redraw-Display, que redibujará la pantalla del terminal. Si este problema ocurre con frecuencia, es posible que desee vincular el comando a una clave, p.ej. Al poner algo como:

(global-set-key (kbd "<f7>") 'redraw-display)

en su archivo .emacs.

Los emacs gráficos no sufren de este problema.

Números escapados extraños (UTF-8) que se muestran en el terminal emacs

Exporte estos valores en su .Bashrc o .zshrc:

$ ~/.bashrc or ~/.zshrc 
export LANG\='en_US.UTF-8'
export LC_ALL\="en_US.UTF-8"
export TERM\=xterm-256color

Puede ser una fuente de errores, ya que en las distribuciones de Linux los valores correctos usan UTF en minúsculas (por ejemplo, en_us.utf-8)

Para ver todos los locales disponibles, use locale -a.

Shift + Las teclas de flecha no funcionan en emacs dentro de tmux

Habilitar xterm-keys en su configuración tmux:

~/.tmux.conf
setw -g xterm-keys on

Debido a que esto romperá otras combinaciones clave, coloque lo siguiente en su configuración de emacs.


~/.emacs
(defadvice terminal-init-screen
  ;; The advice is named `tmux', and is run before `terminal-init-screen' runs.
  (before tmux activate)
  ;; Docstring. This describes the advice and is made available inside emacs;
  ;; for example when doing C-h f terminal-init-screen RET
  "Apply xterm keymap, allowing use of keys passed through tmux."
  ;; This is the elisp code that is run before `terminal-init-screen'.
  (if (getenv "TMUX")
    (let ((map (copy-keymap xterm-function-map)))
    (set-keymap-parent map (keymap-parent input-decode-map))
(set-keymap-parent input-decode-map map))))

Consulte tmux FAQ Para más detalles.

El cambio de tamaño de la ventana inadecuada en kde

This article or section is a candidate for merging with KDE.

Notes: Applicable to other applications (Discuss in Talk:Emacs (Español))

Los usuarios de KDE pueden observar que la ventana EMACS no cambia de tamaño correctamente, sino que la parte redimensionada es transparente y los clics del mouse se envían a la ventana subyacente. Para corregir este comportamiento, cambie el tema GTK3 de KDE a algo más que Oxygen-GTK. Por ejemplo, use el tema Emacs que se incluye con gtk3.

Para obligar a los emacs a maximizar completamente en KDE, haga clic en el icono de emacs en la barra de título y seleccione Más acciones > Configuración de ventana especial. Luego, en la pestaña Tamaño y posición, seleccione Obedecer las restricciones de geometría, elija Force en el menú desplegable y seleccione no en los botones de radio a la derecha.

Alternativas

Existen numerosas implementaciones 'más pequeñas' de EMAC. GNU/Emacs es probablemente el más popular. Aquí se enumerarán algunas alternativas compatibles con emacs livianos:

  • mg — Implementación ligera de emacs escritos en C. Tenga en cuenta que no admite UTF-8.
https://github.com/hboetes/mg || mg
  • Zile — "Zile es emacs con pérdida", un clon liviano escrito para ser lo más similar posible a las emacs. Zile no tiene soporte UTF-8.
https://www.gnu.org/software/zile/ || zileAUR
  • uemacs — A "Micro-emacs" versión personalizada por Linus Torvalds.
https://git.kernel.org/pub/scm/editors/uemacs/uemacs.git || uemacs-gitAUR
  • emacs-ng — Un nuevo enfoque para los emacs - Incluyendo TypeScript, Threading, Async I/O, y WebRender.
https://github.com/emacs-ng/emacs-ng || emacs-ng-gitAUR
  • qemacs — "Quick Emacs", Ased en el intérprete Lisp de EMACS, pero tiene una base de código más pequeña y una interfaz de usuario simplificada.
https://bellard.org/qemacs/ || qemacsAUR
  • sxemacs — Una bifurcación de Xemacs.
http://www.sxemacs.org/ || sxemacsAUR
  • jove — La propia versión de Emacs de Jonathan es un editor de emacs sin Lisp.
https://github.com/jonmacs/jove || joveAUR

Distribuciones Emacs

  • Spacemacs - Una distribución de emacs impulsada por la comunidad: el mejor editor no es ni emacs ni vim, ¡son emacs * y * vim!
  • Doom Emacs - Un marco de emacs para el terco hacker marciano
  • Witchmacs - La distribución de emacs más guapa.
  • Yukimacs - Una configuración GNU/Emacs construida desde cero (sin Spacemacs o Doom Emacs), muy inspirada en las Emacs y Witchmacs del tío Dave.

M: Starter Kits

Ver también