Вопрос по terminal – стрелка вверх не выделяет текст emacs iterm2

7

Мне недавно помогли исправитьM-left и так далее здесь:Emacs в терминале мета-стрелки, но не могу исправитьShift-up используя аналогичное решение. Когда я пытаюсьshift-up Я получаю ошибку<select> is undefined, Я пытался повторно сопоставить его, используя:

(add-hook 'term-setup-hook                                                                                                                                                                         
'(lambda ()                                                                                                                                                                                      
 (define-key function-key-map "\e[1;9A" [M-up])                                                                                                                                                
 (define-key function-key-map "\e[1;9B" [M-down])                                                                                                                                              
 (define-key function-key-map "\e[1;9C" [M-right])                                                                                                                                             
 (define-key function-key-map "\e[1;2A" [S-up])                                                                                                                                                
 (define-key function-key-map "\e[1;9D" [M-left])))  

Но сдвиг остается неопределенным. Я также попытался повторно связать ключ, установив его с помощью escape-последовательности, возвращаемой изcat который^[[1;2A, Как ни странно, сдвиг вниз работает.shift-select-mode отмечен наt также.

У тебя есть больше информации по этому вопросу? Или вы решили это в прошлом году? beaslera

Ваш Ответ

2   ответа
10

у меня возникла проблема с доступом к машине с Ubuntu 12.04 через Putty, когда END заставил Emacs 23.3.1 сказать<select> is undefined. Это оказалось проблемой с TERMINFO который позволяет программам использовать терминалы независимо от устройства.

Основываясь на этом Обсуждение отчета об ошибке 2008 года, Я решил свою проблему, добавив следующее в начало моего ~ / .bashrc:

#so the END key will work correctly in Emacs over PuTTY
TERM=xterm-vt220

N.B., Либо с xterm-vt220, либо с xterm по умолчанию,emacs -Q -nw становитсяESC [ 4 ~ когда я нажимаю END,ESC O A для Up иESC [ A для Shift-Up. (Чтобы увидеть, какие коды клавиш получает Emacs, нажмите несколько кнопок, а затемC-h,l.) Для тех же клавиш в том же порядке,cat говорит[4~, [A, а также[OA ... так что Up и Shift-Up странно перепутаны.

Если вы не хотите менять свой terminfo, посмотрите это обсуждение для обхода проблемыhttp: //lists.gnu.org/archive/html/help-gnu-emacs/2011-05/msg00211.htm

Вы должны быть в состоянии обойти проблему с чем-то вроде:

(define-key input-decode-map "\e[1;2A" [S-up])

И чтобы это вступило в силу в нужное время, вам нужно будет использовать в .emacs что-то вроде:

(if (equal "xterm" (tty-type)) (define-key input-decode-map "\e[1;2A" [S-up]))

3

https: //github.com/arthurnn/dotfiles/blob/8d56f2419da9a4cb654d8941f379d6d5783bdb90/.emacs.d/init.d/setup-bindings.el#L3-L1 это должно исправить все случаи, включая emacsclient. Последняя строка отвечает за исправление сдвига при использовании emacsclient.

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