[macos] OSX의 명령 줄에서 GUI Emacs를 시작하는 방법은 무엇입니까?

OSX의 명령 줄에서 GUI Emacs를 어떻게 시작합니까?

http://emacsformacosx.com/ 에서 Emacs를 다운로드하여 설치했습니다 .

다음 기준을 모두 충족하는 답변을 받겠습니다.

  1. emacs 창이 터미널 창 앞에 열립니다 .
  2. “emacs”를 입력하면 GUI Emacs 창이 열립니다. 해당 창에서 파일을 찾는 것은 기본적으로 내가 Emacs를 시작한 디렉토리를 찾는 것입니다.
  3. foo.txt가있을 때 “emacs foo.txt”를 입력하면 foo.txt가로드 된 GUI Emacs 창이 시작됩니다.
  4. 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의 사이트는 지금이 방법으로 페이지 상단 조각이 어디에서 왔는지이다. emacsclientEmacs를 실행 하고 연결 하는 것에 대한 더 많은 정보가 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 가지 더 많은 기준을 충족한다고 생각합니다.

  1. emacs 창이 터미널 창 앞에 열립니다.

항상 전경으로 열립니다 (x-focus-frame 사용).

  1. “emacs”를 입력하면 GUI Emacs 창이 열립니다. 해당 창에서 파일을 찾는 것은 기본적으로 내가 Emacs를 시작한 디렉토리를 찾는 것입니다.

dired 모드에서 기존 emacs 창을 엽니 다.

  1. foo.txt가있을 때 “emacs foo.txt”를 입력하면 foo.txt가로드 된 GUI Emacs 창이 시작됩니다.

emacs가 이미 실행 중이고 서버가있는 경우 기존 창에서 열리고 포 그라운드로 표시됩니다.

  1. 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 [...]

무슨 일이 일어나고 있는지 정리해 보겠습니다.

  1. 모든 ec인수를 emacsclient에 전달하고 -n계속하기 전에 emacs를 기다리지 마십시오 ( ).
    1. Emacs가 이미 실행 중이면 모두 완료되었으며 편집 중입니다.
  2. emacs가 실행되지 않을 때 emacsclient가 게시 한 오류 메시지를 삼키십시오. ( 2> /dev/null)
  3. 종료 코드 1( [[ $? == 1 ]])

    수동 처리

    1. Emacs.app을 열고 파일 인수를 전달합니다 (경로가 올바르게 열립니다.)
    2. 모든 작업이 완료되었으며 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