4
  1. У меня есть файл screenrc, но я нахожу некоторые конфликты, когда я запускаю emacs внутри экрана. Например, перемещение по буферам в emacs, Ctrl-стрелка вправо / стрелка влево, вместо перемещения назад и вперед, отправляет некоторые символы в буферы, такие как 5C, 5D и т.д. Эта проблема существует, даже когда я вызываю экран без какого-либо файла screenrc. Но, по крайней мере, других конфликтов не было. Но я был бы очень признателен, если бы кто-нибудь сказал мне, как это исправить?

  2. Поскольку у меня есть свои собственные привязки в моем файле screenrc, и я хочу продолжать использовать его, я подумал, что я сохраню свой файл screenrc, но когда я хочу запустить emacs на новом экране, я не буду использовать свой screenrc. Есть ли способ при вызове экрана, чтобы не использовать screenrc? До сих пор я управлял, переименовывая свой файл screenrc во что-то другое при запуске emacs.

  3. Есть ли способ, с помощью которого сам emacs может работать как экран, как в случае, когда я использую экран, чтобы мой сеанс emacs не завершался всякий раз, когда удаленный сеанс ssh завершается. Я нашел некоторую документацию относительно клиента emacs и сервера emacs, но не мог понять многое. Я был бы признателен, если бы кто-то мог рассказать, как сохранять сеансы внутри emacs и восстанавливать их, чтобы мне не приходилось использовать экран для emacs, если это возможно, поскольку в одном случае можно будет снова восстановить процесс emacs.

4 ответа4

9

У меня есть только вход по вашему вопросу № 3.

Начиная с emacs 23, в emacs есть режим демона, который для меня избавил от необходимости запускать emacs внутри экрана. При первом входе в систему после загрузки я запускаю emacs --daemon в терминале. Это запускает Emacs в фоновом режиме. Затем, когда мне нужно использовать emacs, я либо запускаю emacsclient -nc чтобы получить окно X для моего сеанса emacs, либо emacsclient -t чтобы получить сеанс терминала.

Несколько клиентов могут сосуществовать счастливо. Я обычно запускаю X-клиента на экране своей рабочей станции на работе, X-клиента через ssh-вход из дома и терминального клиента на моем телефоне. Все говорят с одним и тем же процессом emacs, все мои буферы и другие состояния не повреждены. И если мое ssh-соединение на моем телефоне прервется, я могу просто продолжить с того места, где остановился, после повторного входа в систему.

Я не знаю достаточно о сочетаниях клавиш на экране, чтобы помочь вам с вашими первыми двумя вопросами.

8

1) Это связано с тем, как Emacs интерпретирует escape-последовательности, отправленные терминалом. Это забавная штука! Вам необходимо настроить карту ввода-декодирования, например, определив следующую функцию в вашем файле .emacs:

(defun terminal-init-screen ()
  "Terminal initialization function for GNU screen."
  (when (boundp 'input-decode-map)
    (define-key input-decode-map "^[[1;5C" [(control right)])
    (define-key input-decode-map "^[[1;5D" [(control left)])))

(Обратите внимание, что ^[ в приведенном выше примере не является кареткой, за которой следует открывающая скобка, это один управляющий символ, который вы вводите так: Cq ESC.)

Эта функция магически вызывается Emacs, работающим внутри экрана.

2) Вы можете вызвать экран с параметром -c , чтобы указать файл, отличный от .screenrc по умолчанию. Поэтому, если у вас есть специальные конфигурации для экрана, которые вы хотите применять только при запуске Emacs внутри экрана, вы можете поместить их в файл .emacs-screenrc и запустить emacs внутри экрана следующим образом:

screen -c .emacs-screenrc emacs

Обратите внимание, что этот файл может быть пустым.

3) Управление сессиями в emacs иногда может быть утомительным. В готовом виде Emacs предоставляет режим сохранения на рабочем столе, который я лично не использую, но я читал смешанные отчеты об этом. Возможно, вы захотите попробовать. Хороший обзор альтернативных подходов можно найти в вики Emacs.

Во-первых, альтернативой управлению сессиями является запуск Emacs в качестве сервера и подключение к нему с помощью emacsclient . Я не знаю, какую документацию вы видели, но официальная документация GNU по Emacs обычно очень хорошая. Посмотри на это:

http://www.gnu.org/software/libtool/manual/emacs/Emacs-Server.html#Emacs-Server

3

Для № 1

Попробуйте вызвать emacs так изнутри экрана:

TERM=xterm emacs -nw somefile

CTRL+ стрелка теперь должна работать как задумано

0

Другой способ получить часть 3) - использовать tramp: с помощью tramp вы можете использовать Emacs, работающий на вашем компьютере, для редактирования файла на вашем сервере. Просто откройте /ssh:user@host:/path/to/remote/file

Это также может быть использовано для другого "удаленного" использования, например

  • /sudo::/etc/bla для редактирования с использованием sudo,
  • /ftp:user@host:/path/to/remote/file для редактирования удаленного файла с помощью ftp ...

tramp снова откроет соединение ssh, когда это необходимо, и вы даже можете использовать tramp для запуска программы на удаленном хосте (например, VCS).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .