Shift-arrow, не работающий в emacs в tmux

Вероятно, указанный маршрутизатор по умолчанию мог бы быть неправильным. Для обнаружения сделать

 netstat -r

видеть таблицу маршрутизации. Найдите маршрут по умолчанию (место назначения 0.0.0.0) и затем проверьте с помощью ping-запросов маршрутизатор по умолчанию... т.е.

 ping 10.0.0.1
26
12.11.2011, 10:06
3 ответа

В общем случае проблемы как это происходят из-за mistmatch между тем, что отправляет эмулятор терминала и что ожидает клиентское приложение.

Различные эмуляторы терминала имеют другую степень настраиваемости, таким образом ознакомление себя с эмуляцией tunables конкретной необходимо.

Клиентские приложения зависят от значения $TERM который привык к терминалу поиска (эмулятор) возможности в terminfo (или termcap) база данных.

В Вашем случае Ваша emacs привязка использует явные последовательности таким образом $TERM и terminfo не важны: определенный эмулятор терминала ожидается - когда Вы уже выяснили, a xterm- совместимый.

0
27.01.2020, 19:40

Во-первых, удостоверьтесь, что Ваш ТЕРМИН является правильным в каждом местоположении:

  • xterm- что-то (например. xterm-256color) в Вашей локальной оболочке, работающей в Вашем iTerm2 окне
  • xterm- что-то в Вашей оболочке после SSHing к системе Linux
    Это должно совпасть с тем, что Вы используете локально в iTerm2, так как SSH должен передавать его удаленной стороне (и, значительно, удаленная сторона не должна вслепую переопределять значение в файле инициализации оболочки).
  • screen- что-то (например. screen-256color) в Вашей оболочке, работающей под tmux в системе Linux
    Необходимо всегда использовать a screen- основанный ТЕРМИН внутри tmux.

Наличие xterm НАЗОВИТЕ сразу снаружи tmux, позволит tmux распознавать измененные клавиши со стрелками, но он не передаст их через, если у Вас также не будет xterm-keys опция окна включена. Вставьте это Ваш ~/.tmux.conf в системе Linux:

set-window-option -g xterm-keys on

Последовательности для клавиш одновременно с "SHIFT" должны теперь сделать его до Emacs, работая внутри tmux, через соединение SSH, в iTerm2 окне.

13
27.01.2020, 19:40
  • 1
    Это точно, что я должен был использовать textadept в tmux. –  William Hilton 09.07.2015, 05:58
  • 2
    Это решение не работало на меня. Я нахожусь на Fedora-23 с помощью терминала гнома. Мой ТЕРМИН и .tmux.conf установлены, как описано в ответе. Установка привязки, как описано в вопросе действительно работает как бы то ни было. Я действительно хотел бы решить эту тайну, так как она также пачкает ncurses приложение, я продолжаю работать. –  gogators 28.06.2016, 22:31
  • 3
    @gogators то же здесь; вышеупомянутое решение не работает на меня даже при том, что я имел точно, что было предложено. –  Fingolfin 30.06.2016, 00:09
  • 4
    Ctrl+Shift, не работает, Ctrl + <f#> не работает и так далее. Ctrl+d действительно работает все же. –  avp 16.11.2016, 17:30
  • 5
    На практике это означает: export XTERM=xterm-256color (Я пишу этот becasue, я не знал то, что "Ваш ТЕРМИН" в средствах ответа, я искал комментарий, объясняя что... не было ни одного, и теперь существует тот.) –  jhegedus 27.02.2017, 23:03

Сначала необходимо включить xterm-keys в Вашей конфигурации tmux. Так вставляет следующее ~/.tmux.conf

setw -g xterm-keys on

Но, это повредит другие сочетания клавиш. Для фиксации их вставьте следующее Ваш~/.emacs или ~/.emacs.d/init.el конфигурация

;; handle tmux's xterm-keys
;; put the following line in your ~/.tmux.conf:
;;   setw -g xterm-keys on
(if (getenv "TMUX")
    (progn
      (let ((x 2) (tkey ""))
    (while (<= x 8)
      ;; shift
      (if (= x 2)
          (setq tkey "S-"))
      ;; alt
      (if (= x 3)
          (setq tkey "M-"))
      ;; alt + shift
      (if (= x 4)
          (setq tkey "M-S-"))
      ;; ctrl
      (if (= x 5)
          (setq tkey "C-"))
      ;; ctrl + shift
      (if (= x 6)
          (setq tkey "C-S-"))
      ;; ctrl + alt
      (if (= x 7)
          (setq tkey "C-M-"))
      ;; ctrl + alt + shift
      (if (= x 8)
          (setq tkey "C-M-S-"))

      ;; arrows
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d A" x)) (kbd (format "%s<up>" tkey)))
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d B" x)) (kbd (format "%s<down>" tkey)))
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d C" x)) (kbd (format "%s<right>" tkey)))
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d D" x)) (kbd (format "%s<left>" tkey)))
      ;; home
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d H" x)) (kbd (format "%s<home>" tkey)))
      ;; end
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d F" x)) (kbd (format "%s<end>" tkey)))
      ;; page up
      (define-key key-translation-map (kbd (format "M-[ 5 ; %d ~" x)) (kbd (format "%s<prior>" tkey)))
      ;; page down
      (define-key key-translation-map (kbd (format "M-[ 6 ; %d ~" x)) (kbd (format "%s<next>" tkey)))
      ;; insert
      (define-key key-translation-map (kbd (format "M-[ 2 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
      ;; delete
      (define-key key-translation-map (kbd (format "M-[ 3 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
      ;; f1
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d P" x)) (kbd (format "%s<f1>" tkey)))
      ;; f2
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d Q" x)) (kbd (format "%s<f2>" tkey)))
      ;; f3
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d R" x)) (kbd (format "%s<f3>" tkey)))
      ;; f4
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d S" x)) (kbd (format "%s<f4>" tkey)))
      ;; f5
      (define-key key-translation-map (kbd (format "M-[ 15 ; %d ~" x)) (kbd (format "%s<f5>" tkey)))
      ;; f6
      (define-key key-translation-map (kbd (format "M-[ 17 ; %d ~" x)) (kbd (format "%s<f6>" tkey)))
      ;; f7
      (define-key key-translation-map (kbd (format "M-[ 18 ; %d ~" x)) (kbd (format "%s<f7>" tkey)))
      ;; f8
      (define-key key-translation-map (kbd (format "M-[ 19 ; %d ~" x)) (kbd (format "%s<f8>" tkey)))
      ;; f9
      (define-key key-translation-map (kbd (format "M-[ 20 ; %d ~" x)) (kbd (format "%s<f9>" tkey)))
      ;; f10
      (define-key key-translation-map (kbd (format "M-[ 21 ; %d ~" x)) (kbd (format "%s<f10>" tkey)))
      ;; f11
      (define-key key-translation-map (kbd (format "M-[ 23 ; %d ~" x)) (kbd (format "%s<f11>" tkey)))
      ;; f12
      (define-key key-translation-map (kbd (format "M-[ 24 ; %d ~" x)) (kbd (format "%s<f12>" tkey)))
      ;; f13
      (define-key key-translation-map (kbd (format "M-[ 25 ; %d ~" x)) (kbd (format "%s<f13>" tkey)))
      ;; f14
      (define-key key-translation-map (kbd (format "M-[ 26 ; %d ~" x)) (kbd (format "%s<f14>" tkey)))
      ;; f15
      (define-key key-translation-map (kbd (format "M-[ 28 ; %d ~" x)) (kbd (format "%s<f15>" tkey)))
      ;; f16
      (define-key key-translation-map (kbd (format "M-[ 29 ; %d ~" x)) (kbd (format "%s<f16>" tkey)))
      ;; f17
      (define-key key-translation-map (kbd (format "M-[ 31 ; %d ~" x)) (kbd (format "%s<f17>" tkey)))
      ;; f18
      (define-key key-translation-map (kbd (format "M-[ 32 ; %d ~" x)) (kbd (format "%s<f18>" tkey)))
      ;; f19
      (define-key key-translation-map (kbd (format "M-[ 33 ; %d ~" x)) (kbd (format "%s<f19>" tkey)))
      ;; f20
      (define-key key-translation-map (kbd (format "M-[ 34 ; %d ~" x)) (kbd (format "%s<f20>" tkey)))

      (setq x (+ x 1))
      ))
    )
  )      

Также у меня есть свое решение в archlinux Wiki

3
27.01.2020, 19:40
  • 1
    оставлен @JeffKlukas: "ответ oblique, что я должен был получить эту работу через PuTTY в Windows также (у меня нет репутации для добавления этого как комментария, таким образом делая ответ вместо этого). Когда я включил опцию xterm-ключей в tmux, Shift-arrow произведет текст как 2C в emacs. Путем добавления вышеупомянутого elisp кодируют к моему init.el, я получаю ожидаемую функциональность (особенно полезный в org режиме)". –  slm♦ 04.06.2014, 17:23

Теги

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