Я искал и нигде не мог найти решение для этого. Я использую 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
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 + стрелка перескакивает слова.