Как открыть файл из командной строки bash в уже открытом Emacs вместо нового экземпляра? Когда я набираю
$ emacs file.txt
он открывает новый экземпляр Emacs, вместо того, чтобы открывать файл в существующем экземпляре Emacs. Mac OS X 10.6.8. и
GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0, NS apple-appkit-1038.36)
от 27.02.2012 на beta.macosforge.org
решение1
то, что вы ищете, это режим сервера emacs. Добавьте эту строку в ваш файл .emacs:
(server-start)
Затем откройте файл с помощью emacsclient:
emacsclient foobar.txt
Посмотри наэтотстраницу для получения более подробной информации.
Чтобы избежать необходимости запускать emacs вручную или устанавливать его на автозапуск, вы можете написать небольшую функцию, которая пытается подключиться к работающему серверу (запустив emacsclient
), а если нет, то запускается emacs
вместо него. Добавьте это в файл конфигурации вашей оболочки (например ~/.bashrc
):
emacs(){
emacsclient "$@" 2>/dev/null || /usr/bin/emacs "$@"
}
Теперь простой запуск emacs file
либо запустит сервер, либо подключится к существующему экземпляру.
решение2
Боюсь, я не могу вспомнить, где я нашел следующее решение. Извините. Однако, поскольку оно сработало для меня оптимально, я добавляю его здесь.
Убедитесь, что .emacs
сервер emacs запущен.
(server-start)
Далее, в вашем .bashrc
определении функции:
function run_emacs
{
/usr/bin/emacsclient "$1" &
}
и установите переменные среды:
export EDITOR=emacsclient
export ALTERNATE_EDITOR=emacs
Наконец, определите псевдоним:
alias emacs='run_emacs'