OSX의 명령 줄에서 GUI Emacs를 어떻게 시작합니까?
http://emacsformacosx.com/ 에서 Emacs를 다운로드하여 설치했습니다 .
다음 기준을 모두 충족하는 답변을 받겠습니다.
- emacs 창이 터미널 창 앞에 열립니다 .
- “emacs”를 입력하면 GUI Emacs 창이 열립니다. 해당 창에서 파일을 찾는 것은 기본적으로 내가 Emacs를 시작한 디렉토리를 찾는 것입니다.
- foo.txt가있을 때 “emacs foo.txt”를 입력하면 foo.txt가로드 된 GUI Emacs 창이 시작됩니다.
- foo.txt가 없을 때 “emacs foo.txt”를 입력하면 “foo.txt”라는 빈 텍스트 버퍼가있는 GUI Emacs 창이 시작됩니다. 해당 버퍼에서 ^ X ^ S를 수행하면 Emacs를 시작한 디렉토리에 foo.txt가 저장됩니다.
답변
다음 스크립트 “emacs”를 호출하여 PATH
어딘가에 넣으십시오 .
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "$@"
여기에는 # 2, # 3 및 # 4가 포함됩니다.
# 1의 경우 .emacs 파일에 다음을 넣으십시오.
(x-focus-frame nil)
emacsformacosx.com의 사이트는 지금이 방법으로 페이지 상단 조각이 어디에서 왔는지이다. emacsclient
Emacs를 실행 하고 연결 하는 것에 대한 더 많은 정보가 git mergetool
있습니다.
답변
셸에서 ’emacs’명령을 별명으로 지정하여 OSX emacs 애플리케이션을 가리 킵니다.
내 셸 (기본 bash 실행)에는 다음이 있습니다 (내 .bashrc에)
alias emacs='open -a /Applications/Emacs.app $1'
그런 다음 명령 줄에 emacs를 입력하면 emacs 응용 프로그램이 시작됩니다.
그러나 나는 당신이 emacs의 사본을 열고 그것을 계속 실행하는 것을 권장합니다. 이 경우 기존 emacs 사본에 파일을로드하려는 경우 .bashrc에 다음을 배치하여 emacsclient를 사용할 수 있습니다.
alias ec='/Applications/Emacs.app/Contents/MacOS/bin/emacsclient'
그런 다음 .emacs 파일에 다음을 추가하여 emacs 서버 (emacsclient 호출 수신)를 시작합니다.
;;========================================
;; start the emacsserver that listens to emacsclient
(server-start)
그런 다음 입력 할 수 있습니다.
ec .bashrc
.bashrc 사본을 기존 emacs 세션에로드하려면!
답변
이것은 백그라운드에서 Emacs를 시작 하여 David Caldwell의 답변 을 향상시킵니다 .
#!/bin/sh
$(/Applications/Emacs.app/Contents/MacOS/Emacs "$@") &
다른 답변에서 언급했듯이 이것은 # 2, # 3 및 # 4를 포함합니다. # 1의 경우 .emacs 파일에 다음을 넣으십시오.(x-focus-frame nil)
.
참고 다음은 않습니다 하지 나를 위해 작동 -이 명령 행에 지정된 디렉토리에 이맥스 시작되지 않습니다 (예를 emacs .
)
# NOT RECOMMENDED
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "$@" &
답변
나는 당신이 다음 중 하나를 가정합니다.
- 로그인시 emacs 데몬 시작
- .emacs에 (server-start)가 있습니다.
- 실행중인 emacs의 개별 복사본이 많이 있어도 상관 없습니다
그렇다면 이것이 원래의 4 가지 기준과 1 가지 더 많은 기준을 충족한다고 생각합니다.
- emacs 창이 터미널 창 앞에 열립니다.
항상 전경으로 열립니다 (x-focus-frame 사용).
- “emacs”를 입력하면 GUI Emacs 창이 열립니다. 해당 창에서 파일을 찾는 것은 기본적으로 내가 Emacs를 시작한 디렉토리를 찾는 것입니다.
dired 모드에서 기존 emacs 창을 엽니 다.
- foo.txt가있을 때 “emacs foo.txt”를 입력하면 foo.txt가로드 된 GUI Emacs 창이 시작됩니다.
emacs가 이미 실행 중이고 서버가있는 경우 기존 창에서 열리고 포 그라운드로 표시됩니다.
- foo.txt가 없을 때 “emacs foo.txt”를 입력하면 “foo.txt”라는 빈 텍스트 버퍼가있는 GUI Emacs 창이 시작됩니다. 해당 버퍼에서 ^ X ^ S를 수행하면 Emacs를 시작한 디렉토리에 foo.txt가 저장됩니다.
옳은.
하나 추가 :
제어는 명령을 입력 한 직후 터미널 세션으로 돌아갑니다.
~ / bin / emacs
#!/bin/bash
EMACSPATH=/Applications/Emacs.app/Contents/MacOS
# Check if an emacs server is available
# (by checking to see if it will evaluate a lisp statement)
if ! (${EMACSPATH}/bin/emacsclient --eval "t" 2> /dev/null > /dev/null )
then
# There is no server available so,
# Start Emacs.app detached from the terminal
# and change Emac's directory to PWD
nohup ${EMACSPATH}/Emacs --chdir "${PWD}" "${@}" 2>&1 > /dev/null &
else
# The emacs server is available so use emacsclient
if [ -z "${@}" ]
then
# There are no arguments, so
# tell emacs to open a new window
${EMACSPATH}/bin/emacsclient --eval "(list-directory \"${PWD}\")"
else
# There are arguments, so
# tell emacs to open them
${EMACSPATH}/bin/emacsclient --no-wait "${@}"
fi
# Bring emacs to the foreground
${EMACSPATH}/bin/emacsclient --eval "(x-focus-frame nil)"
fi
답변
Mountain Lion 에서 다음 별칭으로 Yamamoto Mitsuharu의 포트 https://github.com/railwaycat/emacs-mac-port를 사용하고 있습니다.
alias emacs=/Applications/Emacs.app/Contents/MacOS/Emacs
모든 기준을 충족합니다.
답변
간단한 솔루션 …
이 문제에 대한 매우 복잡한 솔루션이 여기에 게시되어 있습니다. 사소하지 않은 것처럼 보이기 때문에 공평합니다.
그러나이 솔루션은 저에게 정말 잘 작동합니다.
ec() {
emacsclient -n $@ 2> /dev/null
if [[ $? == 1 ]]; then
open -a Emacs.app -- $@
fi
}
용법
ec file [...]
무슨 일이 일어나고 있는지 정리해 보겠습니다.
- 모든
ec
인수를 emacsclient에 전달하고-n
계속하기 전에 emacs를 기다리지 마십시오 ( ).- Emacs가 이미 실행 중이면 모두 완료되었으며 편집 중입니다.
- emacs가 실행되지 않을 때 emacsclient가 게시 한 오류 메시지를 삼키십시오. (
2> /dev/null
) - 종료 코드
1
([[ $? == 1 ]]
)수동 처리
- Emacs.app을 열고 파일 인수를 전달합니다 (경로가 올바르게 열립니다.)
- 모든 작업이 완료되었으며 Emacs가 파일을 열었습니다.
답변
이 가이드에 따라 homebrew 패키지 관리자로 emacs를 빌드했습니다.
http://www.emacswiki.org/emacs/EmacsForMacOS
with brew install –cocoa emacs 그 후 .app 버전을 실행하여 gui를 가져와야합니다. /usr/local/Cellar/emacs/24.3/Emacs.app/Contents/MacOS/Emacs
