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, emacs
stattdessen 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 file
wird 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 .emacs
der Emacs-Server gestartet wird.
(server-start)
Definieren Sie als Nächstes .bashrc
die 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'