Ponieważ emacsclient może poprawnie obsługiwać długi czas ładowania pakietu, naprawdę chcę zachować co najmniej jeden proces emacs, a przez większość czasu tylko jeden proces emacs , otwarty jako proces w tle i lepiej ukryć GUI.
W tej chwili zdefiniowałem następującą funkcję w .bashrc:
emc ()
{
if [[ $# -eq 0 ]]; then
emacs --eval "(suspend-frame)" &
return
fi
args=($*);
setsid emacsclient -c -e "(find-file \"${args[*]}\")"
}
A także mają następujący wiersz w .bashrc:
emc
Więc za każdym razem, gdy otwieram powłokę, skończę z nowym procesem emacsa.
Problem polega na tym, że po otwarciu wielu powłok będę musiał przeprowadzić wiele dodatkowych niepotrzebnych procesów emacs. Chcę jednak cały czas utrzymywać tylko jeden proces emacsa od uruchomienia, lepiej ukryj GUI .
emacsclient
gui
phonycollectibles
źródło
źródło
emacs --eval "(suspend-frame)"
raczej praktykiemacs --daemon
( emacswiki.org/emacs/EmacsAsDaemon ). Czy istnieje powód, dla którego zdecydujesz się nie wywoływać emacsa jako demona? Możesz użyć czegoś takiego,pgrep -U `whoami` emacs || emacs --daemon &
aby upewnić się, że działa.Odpowiedzi:
Robię to, uruchamiając demona emacsa podczas logowania. Miejsce wprowadzenia tego polecenia zależy od menedżera pulpitu. Używam
i3
, który jest skonfigurowany do uruchamiania skryptu podczas logowania, który obejmuje:Dzięki temu emacs zawsze działa w tle, a ja otwieram nowego klienta za pomocą
emacsclient -c -n
, powiązanego z wygodnym klawiszem w menedżerze okien. Jeśli pracujesz w terminalu, wystarczy prosty alias takiegoalias emc='emacsclient'
, ewentualnie-n
,-c
czy-t
argumenty, w zależności od tego, jak go używać.Sprawdź opcje emacsclient w instrukcji: (emacs) Opcje emacsclient , dostępne z Emacsa przez
C-h r m emacsclient options <enter>
). Możesz użyć-a
flagi, aby automatycznie uruchomić demona emacsa, jeśli jeszcze nie działa,-c
lub-t
otworzyć nową ramkę lub klienta terminala, zamiast ponownie używać istniejącego (w tej samej sesji):źródło
Jeśli korzystasz z systemu operacyjnego, który używa menedżera usług systemd (który obecnie obejmuje większość dystrybucji GNU / Linux), najlepszym rozwiązaniem może być użycie systemd do uruchomienia demona Emacsa przy rozruchu. Możesz to zrobić, tworząc plik
$HOME/.config/systemd/user/emacs.service
o następującej treści:Następnie powinieneś uruchomić usługę i ustawić, aby automatycznie uruchamiała się dla wszystkich przyszłych rozruchów:
Możesz teraz używać
emacsclient
jak zwykle. Jeśli normalnie uruchomić go z-n
,-c
lub-t
opcji, można ustawić aliasu w swojej skorupie. Możesz także ustawić zmienne środowiskoweEDITOR
i / lub tak,VISUAL
aby działałyemacsclient
tak, jak lubisz. Na przykład w Bash możesz dodać do.bashrc
pliku:Jeśli kiedykolwiek będziesz musiał zatrzymać demona Emacsa, możesz to zrobić w następujący sposób:
A jeśli chcesz na stałe zatrzymać jego uruchamianie przy starcie systemu:
źródło
Sposób, w jaki to robię, jest bardzo podobny do poprzedniej odpowiedzi, poprzez zdefiniowanie aliasu w moim pliku .bashrc
emacs --daemon
Poza tym mam
ctrl-alt-E
ustawiony skrót klawiaturowyemacsclient -c
. Kiedy chcę rozpocząć pracę z emacsem, otwieram terminal,ds
piszę i wywołuję każdą instancję emacsclient za pomocą mojego skrótu.Mam nadzieję, że to komuś pomoże.
źródło