emacs + экран неправильно обрабатывает ключи

Я ssh подключен к серверу ubuntu:

cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=17.04 DISTRIB_CODENAME=zesty DISTRIB_DESCRIPTION="Ubuntu 17.04"

Я запускаю screen, а затем emacs.

$ screen --version Screen version 4.05.00 (GNU) 10-Dec-16 $ emacs --version GNU Emacs 25.1.1

My screen имеет следующую конфигурацию:

#defflow on # will force screen to process ^S/^Q deflogin on #autodetach off # turn visual bell on vbell on vbell_msg " Wuff ---- Wuff!! " # define a bigger scrollback, default is 100 lines defscrollback 1024 # Remove some stupid / dangerous key bindings bind ^k #bind L bind ^\ # Make them better bind \\ quit bind K kill bind I login on bind O login off bind } history # An example of a "screen scraper" which will launch urlview on the current # screen window # #bind ^B eval "hardcopy_append off" "hardcopy -h $HOME/.screen-urlview" "screen urlview $HOME/.screen-urlview" # The vt100 description does not mention "dl". *sigh* termcapinfo vt100 dl=5\E[M # turn sending of screen messages to hardstatus off hardstatus off # Set the hardstatus prop on gui terms to set the titlebar/icon title termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007 # use this for the hard status string hardstatus string "%h%? users: %u%?" # set these terminals up to be 'optimal' instead of vt100 termcapinfo xterm*|linux*|rxvt*|Eterm* OP # Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E> # (This fixes the "Aborted because of window size change" konsole symptoms found # in bug #134198) termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l' # Enable non-blocking mode to better cope with flaky ssh connections. defnonblock 5

Когда я запускаю emacs -nw вне screen, я могу использовать клавиши со стрелками + для выбора текста. Но внутри screen, когда я нажимаю Shift + вниз, я вижу: M-[ 1 ; 2 b is undefined. Даже с Ctrl + пробелом, который говорит Mark activated, я не могу использовать Ctrl + n для выбора региона.

У меня есть эти связанные переменные среды внутри экрана:

TERMCAP=SC|screen.xterm-256color|VT 100/ANSI X3.64 virtual terminal:\ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\ :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\ :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\ :li#52:co#211:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\ :cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\ :im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\ :ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\ :ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\ :se=\E[23m:mb=\E[5m:md=\E[1m:mh=\E[2m:mr=\E[7m:\ :me=\E[m:ms:\ :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\ :vb=\Eg:G0:as=\E(0:ae=\E(B:\ :ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\ :po=\E[5i:pf=\E[4i:Km=\E[M:k0=\E[10~:k1=\EOP:k2=\EOQ:\ :k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:\ :k8=\E[19~:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\ :F3=\E[1;2P:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:\ :F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:\ :FB=\E[20;2~:FC=\E[21;2~:FD=\E[23;2~:FE=\E[24;2~:kb=:\ :K2=\EOE:kB=\E[Z:kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:\ :*7=\E[1;2F:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:\ :%e=\E[5;2~:%i=\E[1;2C:kh=\E[1~:@1=\E[1~:kH=\E[4~:\ :@7=\E[4~:kN=\E[6~:kP=\E[5~:kI=\E[2~:kD=\E[3~:ku=\EOA:\ :kd=\EOB:kr=\EOC:kl=\EOD:km: TERM=screen.xterm-256color

Кроме того, внутри *scratch*, когда я нажимаю Ctrl + q стрелка-стрелка, я вижу: ^@, независимо от которой стрелка нажимается.

Любая идея, как диагностировать / исправить проблему?

0
задан 2 August 2017 в 17:21

2 ответа

Прочитайте man emacs25:

-nw, --no-window-system Tell Emacs not to create a graphical frame. If you use this switch when invoking Emacs from an xterm(1) window, display is done in that window.

И в screen запустите emacs с помощью emacs --no-window-system

0
ответ дан 18 July 2018 в 09:12

Прочитайте man emacs25:

-nw, --no-window-system Tell Emacs not to create a graphical frame. If you use this switch when invoking Emacs from an xterm(1) window, display is done in that window.

И в screen запустите emacs с помощью emacs --no-window-system

0
ответ дан 24 July 2018 в 19:16
  • 1
    Не уверен, что -nw имеет к этому какое-то отношение. Я уже выполняю все мои emacs сеансы с -nw, это мой дефолт, о котором я забыл упомянуть. – adrin 2 August 2017 в 17:20
  • 2
    Затем emacs отображает вашу переменную среды TERM и отправляет терминальные ESCape-последовательности для этого терминала. – waltinator 2 August 2017 в 17:50
  • 3
    Попробуйте запустить emacs с помощью env TERM=vt100 emacs -nw и посмотрите, поможет ли это. – waltinator 4 August 2017 в 06:44
  • 4
    Теперь Ctrl+space выбираются стрелки. Но рубашки, клавиши Ctrl или Alt + клавиши со стрелками нет. Кроме того, ctrl + q, то клавиши со стрелками в *scratch* все равно возвращают тот же результат. – adrin 4 August 2017 в 10:58

Другие вопросы по тегам:

Похожие вопросы: