Как открыть файл из командной строки bash в уже открытом Emacs, а не в новом экземпляре?

Как открыть файл из командной строки bash в уже открытом Emacs, а не в новом экземпляре?

Как открыть файл из командной строки 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'

Связанный контент