Wie öffnet man eine Datei von der Bash-Befehlszeile im bereits geöffneten Emacs statt in einer neuen Instanz?

Wie öffnet man eine Datei von der Bash-Befehlszeile im bereits geöffneten Emacs statt in einer neuen Instanz?

Wie öffne ich eine Datei von der Bash-Befehlszeile aus im bereits geöffneten Emacs statt in einer neuen Instanz? Wenn ich tippe

$ emacs file.txt

es öffnet eine neue Emacs-Instanz, anstatt die Datei in der vorhandenen Emacs-Instanz zu öffnen. Mac OS X 10.6.8. und

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

vom 27.02.2012 auf beta.macosforge.org

Antwort1

was Sie suchen, ist der Emacs-Servermodus. Fügen Sie Ihrer .emacs-Datei diese Zeile hinzu:

(server-start)

Öffnen Sie dann die Datei mit emacsclient:

emacsclient foobar.txt

Schauen Sie sich anDasSeite für weitere Informationen.


Um zu vermeiden, dass Sie Emacs manuell starten oder auf Autostart einstellen müssen, können Sie eine kleine Funktion schreiben, die versucht, eine Verbindung zu einem laufenden Server herzustellen (durch Ausführen von emacsclient) und, falls dies nicht gelingt, emacsstattdessen ausgeführt wird. Fügen Sie Folgendes zur Konfigurationsdatei Ihrer Shell hinzu (z. B. ~/.bashrc):

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

Jetzt emacs filewird durch einfaches Ausführen entweder der Server gestartet oder eine Verbindung zu einer vorhandenen Instanz hergestellt.

Antwort2

Ich fürchte, ich kann mich nicht erinnern, wo ich die folgende Lösung gefunden habe. Tut mir leid. Da sie für mich jedoch optimal funktioniert hat, füge ich sie hier hinzu.

Stellen Sie sicher, dass .emacsder Emacs-Server gestartet wird.

(server-start)

Definieren Sie als Nächstes .bashrcdie Funktion:

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

und legen Sie die Umgebungsvariablen fest:

export EDITOR=emacsclient
export ALTERNATE_EDITOR=emacs

Definieren Sie abschließend den Alias:

alias emacs='run_emacs'

verwandte Informationen