Jak uruchomić emacsa w emulatorze terminali bez osobnego okna?

16

Chcę przejść na Emacsa z Vima i jedną rzeczą, która mnie powstrzymuje, jest to, że Emacs otwiera osobne okno, gdy działa pod X. Czy mogę uzyskać takie samo zachowanie dla Emacsa, jak wtedy, gdy nie działa pod X? Oznacza to, że chcę, aby Emacs rozpoczął sesję w tym samym terminalu, w którym został uruchomiony.

Daj mi znać, jeśli pytanie nie jest jasne. Z góry dziękuję!

Amit Saha
źródło

Odpowiedzi:

34

Nie jestem ekspertem od emacsa, ale to załatwiło sprawę:

emacs -nw
Alberto Zaccagni
źródło
7
Masz rację, ponieważ ciekawy -nw jest skrótem od --no-window-system, który mówi emacsowi, aby nie używał swojego interfejsu X.
@Mic: Dzięki za wyjaśnienie, w ten sposób zapamiętam, co to oznacza
Alberto Zaccagni
16

Możesz preferować uruchamianie emacsa jako, emacs --daemona następnie przy użyciu emacsclient -tdo edycji plików. Dzięki temu Emacs jest ładowany w tle, dzięki czemu możesz używać Emacsa bardziej jak vi. Sesje edycyjne rozpoczną się natychmiast, a „wyjście” przez Cx Cc po prostu zamknie bieżące połączenie. To jest bardzo miłe.

jrockway
źródło
5

Chociaż odpowiedź na twoje pytanie, zaryzykuję stwierdzenie, że nie jest to sposób, w jaki zwykły użytkownik używa emacsa. W przeciwieństwie do vima, emacs ma na ogół dłuższy czas uruchamiania i tak czy inaczej, cały czas działa z wieloma otwartymi buforami. Więc jeśli chcesz zrobić coś z emacsem w terminalu, wywołujesz emacsclient -nw(zakładając, że serwer emacsa został uruchomiony). Sprawdź, jak zacząć korzystać z EmacsClient, aby uzyskać szczegółowe informacje.

Radża
źródło
2

Jeśli używasz bash, zawsze możesz dodać następujące elementy do swojego .bashrc

alias emacs = "emacs -nw"

To zaoszczędziło mi dużo pisania (i przekleństw, kiedy zapomniałem wpisać przełączniki).

Dick Kennedy
źródło
1

Łącząc powyższe odpowiedzi Dicka Kenny'ego i Alberto Zaccagniego, otrzymujesz następującą konfigurację, której używam .bashrc:

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

Spróbuje połączyć się z działającym demonem emacs. Jeśli żaden nie jest uruchomiony, uruchomi nowy, a następnie połączy się przy użyciu bieżącego okna terminala.

Z dokumentów:

-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
źródło
1
Kiedy próbuję tego polecenia, Emacs nie uruchamia się, zamiast tego ostrzega mnie, że nie ma serwera, z którym można się połączyć, po czym następuje gigantyczny zrzut wartości i Emacs się nie uruchamia.
Koz Ross,