Назад | Перейти на главную страницу

Использование клавиш со стрелкой ctrl с PuTTY и экраном

Я искал и нигде не мог найти решение для этого. Я использую PuTTY из Windows для подключения к различным серверам, на которых я запускаю bash и screen. Кажется, что bash отлично работает с клавишами со стрелкой ctrl для перехода от слова к слову в командной строке, но на экране он не работает. Не на экране, ctrl-left отправляет «^ [OC, а ctrl-right -« ^ [OD ». На экране я вместо этого получаю« ^ [[C »и« ^ [[D », которые, по-видимому, являются кодами только для клавиши со стрелками влево / вправо. Есть ли способ заставить экран распознавать клавиши со стрелками ctrl при использовании PuTTY? (FYI, я не помню, чтобы у меня была эта проблема при использовании gnu-terminal в Linux вместо PuTTY).

ОБНОВЛЕНИЕ: похоже, проблема в PuTTY, поскольку он не отправляет escape-коды, необходимые для работы. Я пока отказываюсь и использую Cygwin + mintty.

Как упоминалось в Вот, вы можете ввести ~ / .inputrc:

"\eOD": backward-word
"\eOC": forward-word

У меня это сработало.

Редактировать:

Вот что у меня сработало:

  • Мой ~/.bashrc наборы TERM=xterm (мой оказывается TERM=xterm-256colors) переопределение экрана TERM=screen
  • Я установил PuTTY> Терминал> Возможности> Отключить режим клавиш курсора приложения к проверил
  • Я вхожу tput smkx в командной строке Bash
  • Теперь клавиши со стрелками и Ctrl переходят слово за словом

  • В информационных целях, если я:
    tput smkx | hexdump -c
    я получил
    0000000 033 [ ? 1 h 033 =
    и
    tput rmkx | hexdump -c
    дает мне
    0000000 033 [ ? 1 l 033 >

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

Оригинальный ответ:

Из info screen:

Каждое окно в сеансе screen имитирует терминал VT100 с добавлением некоторых дополнительных функций. Эмулятор VT100 жестко запрограммирован, никакие другие типы терминалов не могут быть эмулированы.

А у VT100 нет кодов клавиш Ctrl-Arrow.

Я несколько удивлен, что у вас есть Putty для правильной отправки ctrl-стрелок даже без использования экрана, так как это никогда не работало для меня. Мое решение состояло в том, чтобы переключиться на использование клавиш alt-arrowkeys (мета-стрелки), которые, как я считаю, имеют ту же привязку прямого / обратного слова в bash по умолчанию, хотя мне пришлось выпустить пару дополнительных команд для zsh, чтобы распознать их:

bindkey "^[^[[C" forward-word      # Meta-RightArrow
bindkey "^[^[[D" backward-word     # Meta-LeftArrow

Если другие найдут этот старый вопрос, как и я, более новое решение:

Ctrl и клавиши со стрелками не работают в шпатлевке! Что мне делать?

putty инвертирует смысл режима курсорной клавиши на ctrl, что для tmux довольно сложно правильно определить. Чтобы правильно использовать клавиши ctrl, измените настройки terminfo, чтобы kUP5 (Ctrl-Up и т. Д.) Были настроенными версиями, и отключите smkx / rmkx, чтобы tmux не менял режим. Например, с этой строкой в ​​.tmux.conf (при условии, что TERM установлен на xterm):

set -g terminal-overrides "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

Обратите внимание, что это будет работать только в tmux 1.2 и выше.

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ

Я испытал прямо противоположное! Для меня ctrl-left и ctrl-right не имели желаемых эффектов в командной строке, но они по-прежнему работали на экране (и в emacs). Я думаю, это связано с тем, как ваша программа вводит специальные символы. (Сейчас я использую MobaXterm.)

Мое исправление заключалось в добавлении этих двух строк в .inputrc файл:

";5D": backward-word
";5C": forward-word

(The ;5C и ;5D были тем, что появилось в командной строке, когда я использовал их до этого исправления.)

Вы должны изучить документацию terminfo, ncurses, screen и putty, если хотите правильно отлаживать / настраивать. Также ярлыки bash можно настроить с помощью inputrc. Загляните в справочные страницы bash и найдите inputrc.

У вас правильная кодировка символов в Putty? Если вы подключаетесь к серверу в UTF-8 и ваша замазка находится в стандартной кодировке, в vim пишутся клавиши со стрелками. Если Putty находится в UTF-8, вы можете перемещать курсор. Может быть, в вашем случае так же ...

В вашей конфигурации шпатлевки в Терминале -> Возможности есть несколько флажков "отключить". Вы можете попробовать отключить клавиши курсора приложения или режим клавиатуры приложения - иногда шпатлевка пытается быть «слишком умной» и отправляет управляющие символы, несовместимые с сервером.

Я использую Терминал> Клавиатура> Функциональные клавиши> Xterm R6, который помогает с функциональными клавишами htop (поиск f4 и т. Д.), Работающими должным образом.

Я обнаружил, что вместо использования CTRL + стрелка, ALT + стрелка перескакивает слова.