내가 아는 한, emacs 시작 속도를 높이는 한 가지 방법은 emacs --daemon
로그인 시 실행한 다음 로 emacslient
파일을 여는 것입니다 emacs
. 그러면 새 emacs 인스턴스를 만드는 대신 실행 중인 emacs 서버에 액세스하게 됩니다.
그러나 꼭 필요한 경우가 아니면 로그인 프로세스 속도를 높이기 위한 방법으로 프로그램을 자동 시작에 넣지 않는 것이 좋습니다. emacs 서버가 실행 중인지 감지하는 안정적인 방법이 있습니까? 이렇게 하면 Emacs를 사용하여 처음으로 파일을 열 때 Emacs 서버를 생성하는 간단한 스크립트를 작성할 수 있습니다.
#!/bin/sh
if emacs_daemon_is_not_running # <-- How do I do this?
then
emacs --daemon
fi
emacsclient -c "$@"
답변1
emacs가 이미 실행 중인지 테스트할 필요조차 없습니다. emacsclient
아직 실행 중이 아닌 경우 emacs 데몬을 시작할 수 있습니다. 에서 emacsclient(1)
:
-a, --alternate-editor=EDITOR
if the Emacs server is not running, run the specified editor
instead. This can also be specified via the `ALTERNATE_EDITOR'
environment variable. If the value of EDITOR is the empty
string, run `emacs --daemon' to start Emacs in daemon mode, and
try to connect to it.
나는 ge
다음과 같이 정의된 별칭을 사용하여 파일을 편집합니다.
alias ge="emacsclient -c -n --alternate-editor=\"\""
답변2
emacsclient
자체를 사용하여 연결이 있는지 테스트 할 수 있습니다 .
#!/bin/sh
if ! emacsclient -e 0 >&/dev/null
then emacs --daemon
fi
emacsclient -c "$@"
-e 0
계산식 "0"을 나타내며 0만 인쇄합니다. emacsclient가 서버에 연결할 수 없는 경우 반환 코드는 0이 아닙니다.
답변3
이것을 쉘 함수나 스크립트에 넣을 수 있습니다:
if ! ps h -o pid,args -C emacs | grep -q -- --daemon ; then
emacs --daemon
fi
emacsclient -c "$@"
ps
이는 표준 Linux 패키지 procps
의 패키지를 사용하고 있다고 가정합니다 . 둘 중 하나를 사용하면 ps
정확한 옵션이 달라집니다 .
답변4
다음을 사용하여 ps
이 작업을 수행할 수 있습니다 or
.
ps -e -o args | grep -qE 'emacs --(bg-|)daemon' || emacs --daemon
영감을 받아 답변 cas
해 보세요.hugomg