Wie starte ich 'emacs' im Terminal-Emulator ohne ein separates Fenster?

16

Ich möchte von Vim zu Emacs wechseln. Eine Sache, die mich davon abhält, ist, dass Emacs unter X ein eigenes Fenster öffnet. Kann ich für Emacs dasselbe Verhalten erzielen wie unter X? Das heißt, ich möchte, dass Emacs die Sitzung in demselben Terminal startet, in dem sie abgefeuert wurde.

Lassen Sie mich wissen, wenn die Frage nicht klar ist. Danke im Voraus!

Amit Saha
quelle

Antworten:

34

Ich bin kein Emacs-Experte, aber das hat mir geholfen:

emacs -nw
Alberto Zaccagni
quelle
7
Sie haben recht, denn das neugierige -nw ist die Abkürzung für --no-window-system und weist Emacs an, die X-Schnittstelle nicht zu verwenden.
@Mic: Danke für die Erklärung, auf diese Weise werde ich mich daran erinnern, wofür es steht
Alberto Zaccagni
16

Sie können es vorziehen, Emacs zu starten emacs --daemonund dann emacsclient -tzum Bearbeiten von Dateien zu verwenden. Dadurch bleibt Emacs im Hintergrund geladen, sodass Sie Emacs eher wie vi verwenden können. Die Bearbeitungssitzungen werden sofort gestartet und durch "Beenden" über Cx Cc wird nur die aktuelle Verbindung geschlossen. Es ist sehr schön.

jrockway
quelle
5

Obwohl Ihre Frage beantwortet wurde, würde ich sagen, dass dies nicht die Art und Weise ist, wie normale Benutzer Emacs verwenden würden. Im Gegensatz zu vim hat emacs im Allgemeinen eine längere Startzeit und läuft ohnehin immer mit mehreren offenen Puffern. Wenn Sie also etwas mit Emacs in einem Terminal tun möchten, rufen Sie auf emacsclient -nw(vorausgesetzt, ein Emacs-Server wurde gestartet). Weitere Informationen finden Sie unter So starten Sie die Verwendung von EmacsClient .

Raja
quelle
2

Wenn Sie bash verwenden, können Sie Ihrer .bashrc immer Folgendes hinzufügen

alias emacs = "emacs -nw"

Das hat mir viel Tipparbeit erspart (und Fluchen, wenn ich vergesse, die Schalter zu tippen).

Dick Kennedy
quelle
1

Wenn man die obigen Antworten von Dick Kenny und Alberto Zaccagni kombiniert, erhält man die folgende Konfiguration, in der ich verwende .bashrc:

alias emacs='emacsclient -nw -c -a ""'

Dadurch wird versucht, eine Verbindung zu einem laufenden Emacs-Daemon herzustellen. Wenn keine ausgeführt wird, wird eine neue gestartet und die Verbindung über das aktuelle Terminalfenster hergestellt.

Aus den Dokumenten:

-a EDITOR, --alternate-editor=EDITOR
        Editor to fallback to if the server is not running
        If EDITOR is the empty string, start Emacs in daemon
        mode and try connecting again

-nw, -t, --tty      Open a new Emacs frame on the current terminal

-c, --create-frame  Create a new frame instead of trying to 
                    use the current Emacs frame
Heinrich Hartmann
quelle
1
Wenn ich diesen Befehl ausprobiere, startet Emacs nicht. Stattdessen wird eine Warnung angezeigt, dass kein Server zum Herstellen einer Verbindung vorhanden ist, gefolgt von einem riesigen Speicherauszug mit Werten und einem nicht startenden Emacs.
Koz Ross