¿Cómo abrir un archivo desde la línea de comando bash en Emacs ya abierto en lugar de una nueva instancia?

¿Cómo abrir un archivo desde la línea de comando bash en Emacs ya abierto en lugar de una nueva instancia?

¿Cómo abrir un archivo desde la línea de comando bash en Emacs ya abierto en lugar de una nueva instancia? cuando escribo

$ emacs file.txt

abre una nueva instancia de Emacs, en lugar de abrir el archivo en la instancia de Emacs existente. MacOS X 10.6.8. y

GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0, NS apple-appkit-1038.36)

del 27/02/2012 en beta.macosforge.org

Respuesta1

lo que buscas es el modo servidor emacs. Agregue esta línea a su archivo .emacs:

(server-start)

Luego, abra el archivo usando emacsclient:

emacsclient foobar.txt

Mira estoestepágina para más información.


Para evitar tener que iniciar emacs manualmente o configurarlo para que se inicie automáticamente, puede escribir una pequeña función que intente conectarse a un servidor en ejecución (ejecutando emacsclient) y, si no, se ejecute emacsen su lugar. Agregue esto al archivo de configuración de su shell (por ejemplo ~/.bashrc):

emacs(){ 
    emacsclient "$@" 2>/dev/null || /usr/bin/emacs "$@" 
}

Ahora, simplemente ejecutar emacs fileiniciará el servidor o se conectará a una instancia existente.

Respuesta2

Me temo que no recuerdo dónde encontré la siguiente solución. Lo siento. Sin embargo, como funcionó de manera óptima para mí, lo agrego aquí.

Asegúrese de .emacsiniciar el servidor emacs.

(server-start)

A continuación, defina .bashrcla función:

function run_emacs
{
/usr/bin/emacsclient "$1" &
}

y establecer las variables de entorno:

export EDITOR=emacsclient
export ALTERNATE_EDITOR=emacs

Finalmente, defina el alias:

alias emacs='run_emacs'

información relacionada