Проблема с экраном GNU при использовании Emacs Cx Cs (save-buffer)


33

Когда я использую emacs в GNU Screen, при вызове Cx Cs экран зависает и не реагирует на ввод с клавиатуры.

Я не могу воспроизвести это, но по крайней мере один раз в день мне приходится убивать сеанс экрана и перезапускать его.

Как я могу решить это?

Благодарность


Какой Unix? Есть много различий в обработке терминальных устройств между Linux, BSD, Solaris, ...
grawity

1
Я на самом деле использую Putty для ssh в экземпляр UTS Ubuntu Server.
Симао

Ответы:


52

CtrlSявляется символом управления потоком «Приостановка передачи» (XOFF) . Обычно он обрабатывается драйвером tty или в данном случае Screen. Его противоположность XON или CtrlQ.

Когда вы запускаете Emacs, он обычно принимает большинство специальных символов (например, не только управление потоком, но и обычное CtrlC«Прерывание»).

  • Используйте C-a :flow offдля отключения управления потоком для этого окна экрана.

    Подтвердите с помощью C-a :info(ищите -flowво всплывающем окне).

  • Если это не поможет, попробуйте stty -ixonили stty stop undef.

    (Вы можете сделать это из отдельного окна, используя stty -f /dev/tty1или stty </dev/tty1.)

В моей системе (Linux) Screen не замечает, когда управление потоком отключено для tty. Ваша ОС может иметь некоторые ограничения.


:flow offработал. Благодарность! В любом случае, я могу сделать это постоянным?
Симао

1
@simao: см. defflowна странице руководства screen.
Гравитация

3
Разработка комментариев @simao и @ grawity - чтобы навсегда отключить управление потоком (я полагаю, что это желаемый результат для большинства людей), добавьте строку defflow offв свой ~/.screenrcфайл или создайте ее в своем домашнем каталоге, если она еще не существует. Этого было достаточно, чтобы мои emacs могли нормально работать в screenокне. Этот подход следует рассмотреть перед повторным связыванием любых ключей.
PSCL

2
Это решило проблему для меня, но мне еще предстоит выяснить, почему экран «внезапно» был переведен в этот режим .... возможно, есть какое-то нажатие клавиши экрана, которое позволяет контролировать поток, который я случайно набрал ... ?? ?
Malcook

1
Мы говорим об GNU screen и GNU Emacs, и они не нашли способ заставить оба работать без проблем ?? ...
Ив Бомес

4

У меня были такие же проблемы с заблокированным экраном и многие другие при использовании emacs под экраном. Например, Ca в emacs, который приводит вас в начало строки, перехватывается экраном и не работает.

РЕШЕНИЕ:

Создайте файл .screenrc в вашем домашнем каталоге со следующим:

#Change escape character to C-u 
escape "^uu"                                                                    
#unbind ctrl+s from xoff in order to be able to search in emacs                 
bind s                                                                          
bind ^S                                                                         
#unbind ctrl+x from lockscreen in order to be able to save in emacs             
bind x                                                                          
bind ^X                                                                         

Затем каждый раз, когда вы открываете новый экран вместо Ca, вам нужно использовать Cu для ввода новой экранной команды. Два других изменения касаются еще нескольких вещей, которые мне нужно было изменить, чтобы можно было без проблем использовать emacs под экраном.


C-uэто важный ключ для Emacs. Я не думаю, что это хорошая идея, но идея изменения .screenrc - лучшая альтернатива.
vfclists
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.