Як відкрити файл у існуючому процесі emacs з командного рядка?


14

У мене є кілька сценаріїв, які запускають усі програми та файли, пов’язані з конкретним проектом. Але він запустить декілька екземплярів emacs, а не просто змусить поточні emacs відкрити потрібні файли. Я вважаю за краще, щоб поточні emacs просто відкрили текстові файли проекту в новому буфері.

Будь-які ідеї, як я можу це зробити?


Подивіться на мою відповідь stackoverflow.com/a/38655619/2450748 Хоча через 5 років :)
nexayq

Відповіді:


21

M-x server-startвсередині сеансу Emacs, потім використовуйте emacsclient -n file1 file2 ...для додавання файлів до існуючих Emacs. Ви можете скористатися додатковими параметрами, наприклад, -cвідкрити файли в новому вікні (кадрі).


спасибі дуд. Це те, що я повинен знати. Я ще не перевіряю "правильну відповідь", тому що я чув, що ви завжди повинні тримати її трохи відкритою, щоб дати можливість іншим зробити свій внесок. Але я вже поставив вашу відповідь у деяких сценаріях.
bev

Зазвичай ви хочете (server-start)ввести файл .emacs, а не запускати сервер вручну. Я використовую, (and window-system (server-start))щоб уникнути запуску сервера, якщо я запускаю emacs в терміналі.
cjm

У сучасних Emacs це так само корисно в терміналі; див -tваріант.
geekosaur

@cjm - насправді я запускаю сервер у своєму файлі .emacs. Я просто не користувався ним :-)
bev

5

Помістіть (server-start)у свій .emacsфайл.

Додайте це до ~/.bashrc

alias myedit='emacsclient --alternate-editor="" --no-wait $*' #quotes intentionaly left blank

потім використовуйте myeditяк свого редактора. Вам потрібно буде скористатися -cопцією, щоб відкрити вікно.

Тож ви можете зробити це:

myedit -c a-file
run-script #that uses myedit

або

run-script #that uses myedit
myedit -c

Річард, дякую за вклад. Я все ще спантеличую кілька речей з вашим сценарієм. По-перше, оскільки emacsclient не має опції -c, я припускаю, що це штучка, але не знаю. По-друге, чому б не поставити emacs як альтернативний редактор? Спасибі
бев

# $ emacsclient --help .... Приймаються наступні ВАРІАНТИ: ... -c, --create-frame Створіть новий кадр замість того, щоб намагатися використовувати поточний кадр Emacs ... -a EDITOR, --alternate -editor = EDITOR Редактор для резервного копіювання, якщо сервер не працює. Якщо EDITOR - порожня рядок, запустіть Emacs в демон-режимі та спробуйте підключитися ще раз
ctrl-alt-delor

Вам не потрібно (і насправді, мабуть, не хочеться) використовувати позиційні параметри при визначенні псевдоніма. Розглянемо, як alias foo='echo bar $*'розширюється в set quux; foo baz. Якщо ви хочете використовувати позиційні параметри, спробуйте це як функцію оболонки:myedit() { emacsclient … "$@"; }
Кріс Джонсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.