Как запустить графический интерфейс Emacs из командной строки в OSX?
Как запустить графический интерфейс Emacs из командной строки в OSX?
Я загрузил и установил Emacs из http://emacsformacosx.com/.
Я приму ответ, отвечающий всем следующим критериям:
- Окно emacs открывается перед моим терминальным окном.
- Набрав "emacs", запускается окно GUI Emacs. Поиск файлов в этом окне по умолчанию будет выглядеть в каталоге, откуда я начал Emacs.
- Ввод "emacs foo.txt", когда foo.txt существует, запускает окно GUI Emacs с загруженным foo.txt.
- Набрав "emacs foo.txt", когда foo.txt не существует, запускается окно GUI Emacs с пустым текстовым буфером с именем "foo.txt". Выполнение ^ X ^ S в этом буфере сохранит foo.txt в каталоге, откуда я начал Emacs.
Ответы
Ответ 1
Вызвать следующий script "emacs" и поместить его в PATH
где-нибудь:
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "[email protected]"
Это охватывает # 2, # 3 и # 4.
Для # 1 поместите это где-нибудь в файл .emacs:
(x-focus-frame nil)
На веб-сайте emacsformacosx.com есть страница How-To, в которой находится верхний фрагмент пришли из. Там больше информации о запуске emacsclient
и подключении Emacs до git mergetool
.
Ответ 2
В вашей оболочке alias команда emacs указывает на приложение OSX emacs
В моей оболочке (работает по умолчанию bash) у меня есть следующее (в моем .bashrc)
alias emacs='open -a /Applications/Emacs.app $1'
Затем, ввод emacs в командной строке запускает приложение emacs.
Однако я бы рекомендовал вам открыть копию emacs и просто продолжить работу. В этом случае, и вы хотите загрузить файл в существующую копию emacs, вы можете использовать emacsclient, поместив следующее в свой .bashrc:
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!
Ответ 3
Это улучшает ответ Дэвид Колдуэлл, запустив Emacs в фоновом режиме:
#!/bin/sh
$(/Applications/Emacs.app/Contents/MacOS/Emacs "[email protected]") &
Как указано в другом ответе, это охватывает # 2, # 3 и # 4. Для # 1 поместите это где-нибудь в файл .emacs: (x-focus-frame nil)
.
Обратите внимание, что для меня работает не - он не запускает Emacs в каталоге, указанном в командной строке (например, emacs .
)
# NOT RECOMMENDED
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "[email protected]" &
Ответ 4
На Mountain Lion я использую порт Yamamoto Mitsuharu https://github.com/railwaycat/emacs-mac-port со следующим псевдонимом:
alias emacs=/Applications/Emacs.app/Contents/MacOS/Emacs
и он удовлетворяет всем вашим критериям.
Ответ 5
Дальнейшее улучшение ответа Дэвида Джеймса: для меня работает следующее:
В соответствии с инструкциями, чтобы открыть файл с терминала, найденного в http://www.emacswiki.org/emacs/EmacsForMacOS#toc20
open -a /Applications/Emacs.app <file-name>
Объединив это с ответом David Jame, я создал следующий emax bash script и поместил его в свой путь в ~/bin
#!/bin/bash
(open -a /Applications/Emacs.app "[email protected]") &
Caveat: чтобы emacs открывал текущий каталог в режиме Dired by name, вам нужно использовать
emax .
Окружающая среда:
- OS X Yosemite Version 10.10.2
- GNU Emacs 24.4.2 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343.14)
от 2014-11-13
Ответ 6
Я предполагаю, что вы либо:
- Запустите демон emacs при входе в систему
- У вас (сервер-старт) в вашем .emacs
- Не возражайте, если у вас будет много отдельных экземпляров emacs.
Если это так, то я думаю, что это удовлетворяет исходным четырем критериям, плюс еще одно:
- Окно emacs открывается перед моим терминальным окном.
он всегда будет открыт для переднего плана (с x-focus-frame).
- Набрав "emacs", запускается окно GUI Emacs. Поиск файлов в этом окне по умолчанию будет выглядеть в каталоге, откуда я начал Emacs.
Он откроет существующее окно emacs в режиме ожидания.
- Набрав "emacs foo.txt", когда foo.txt существует, запускается окно GUI Emacs с загруженным foo.txt.
Если emacs уже запущен и имеет сервер, он откроется в существующем окне и выйдет на передний план.
- Набрав "emacs foo.txt", когда foo.txt не существует, запускается окно GUI Emacs с пустым текстовым буфером с именем "foo.txt". Выполнение ^ X ^ S в этом буфере сохранит foo.txt в каталоге, откуда я начал Emacs.
Правильно.
Один дополнительный:
Элемент управления возвращается к сеансу терминала сразу после ввода команды.
~/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 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
Ответ 7
Просто созданный emacs с менеджером пакетов homebrew в соответствии с этим руководством:
http://www.emacswiki.org/emacs/EmacsForMacOS
с brew установить - cocoa emacs
После этого нужно запустить версию .app, чтобы получить gui, что в моем случае было/usr/local/Cellar/emacs/24.3/Emacs.app/Contents/MacOS/Emacs
Ответ 8
Другие ответы здесь не совсем сработали для меня. В частности, на моей машине bash script
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "[email protected]"
всегда открывает emacs в домашнем каталоге. Чтобы заставить его открываться в текущем рабочем каталоге, мне пришлось делать
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "$PWD/[email protected]"
вместо.
Ответ 9
Скомпилируйте Emacs в соответствии со следующими шагами:
./configure --with-x --prefix=/usr
make
sudo make install
И ваше дело! Это может помочь загрузить и установить XQuartz, но это только мое мнение.
Ответ 10
Это мой script для открытого emacs/emacsclient в osx.
#!/bin/bash
# Ensure (server-start) is added in your emacs init script.
EMACS=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
EMACSCLIENT=/Applications/Macports/Emacs.app/\
Contents/MacOS/bin/emacsclient
# test if client already exsit.
$EMACSCLIENT -e "(frames-on-display-list)" &>/dev/null
# use emacsclient to connect existing server.
if [ $? -eq 0 ]; then
$EMACSCLIENT -n "[email protected]"
# open emacs.app instead.
else
`$EMACS "[email protected]"` &
fi