Використання клавіш зі стрілками ctrl з PuTTY та екраном


33

Я шукав і не міг знайти рішення для цього ніде. Я використовую PuTTY від Windows для підключення до різних серверів, де я запускаю bash та screen. Здається, Bash добре працює з клавішами ctrl-стрілки, щоб переходити слово в слово в командному рядку, але на екрані він не працює. Не на екрані, ctrl-ліворуч надсилає "^ [OC, а ctrl-right -" ^ [OD ". На екрані я натомість отримую" ^ [[C "і" ^ [[D ", який, як видається, є кодами клавіші зі стрілками вліво / вправо. Чи є спосіб отримати екран для розпізнавання клавіш ctrl-стрілки під час використання PuTTY? (FYI, я не пам’ятаю, щоб у мене була проблема при використанні gnu-терміналу в Linux замість PuTTY).

ОНОВЛЕННЯ: Здається, проблема "PuTTY" є тим, що вона не надсилає коди евакуації, необхідні для цього. Я поки відмовляюся і використовую м'яту Cygwin +.


Нічого собі, м'ята чудова - вже деякий час шукають гідний емулятор терміналу для Windows. Дякую за це.
синенький

Однак я ^[[1;5A
готуюсь

Відповіді:


13

Редагувати:

Ось що для мене спрацювало:

  • Мої ~/.bashrcнабори TERM=xterm(у мене буває TERM=xterm-256colors) перекриття екрануTERM=screen
  • Я поставив PuTTY> Terminal> Опції> Роз'єднати Application режим клавіші управління курсором , щоб перевірив
  • Я входжу tput smkxпід запитом Bash
  • Тепер клавіші Ctrl-Arrow перескакують слово за словом

  • В інформаційних цілях, якщо я це роблю:
    tput smkx | hexdump -c
    я дістаю
    0000000 033 [ ? 1 h 033 =
    і
    tput rmkx | hexdump -c
    дає мені
    0000000 033 [ ? 1 l 033 >

Я думаю, що є спосіб переробити це в щось трохи краще, але це все, що у мене є, і, здається, працює.

Оригінальна відповідь:

Від info screen:

Кожне вікно сеансу на екрані емулює термінал VT100, додані додаткові функції. Емулятор VT100 жорстко закодований, інші типи терміналів не можуть бути імітовані.

І VT100 не мають клавіш Ctrl-Arrow.


set -o vi(якщо ви такий тип людини :)
MikeyB

1
@MikeyB: Як це допомагає (до речі, це не допомагає)?
Призупинено до подальшого повідомлення.

Спасибі. Не відповідь, на яку я сподівався, але тепер я можу продовжувати і жити з цим обмеженням або використовувати іншу прив'язку ключів.
kbosak

1
@Dennis: Ну, це дає вам інший спосіб поводження вперед / назад, якщо ви опечатник людини, який може обернути голову навколо цього. set -o viвмикає режим командного рядка vi, щоб ви могли натискати ESCта використовувати клавіші vi для переміщення та редагування вашого командного рядка.
MikeyB

1
@kbosak: Я також не задоволений цією відповіддю. Ось чому я це виправив . :-)
Призупинено до подальшого повідомлення.

23

Як згадується тут , ви можете поставити ~ / .inputrc:

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

Це працювало для мене.


5
Це працювало для мене і було набагато простіше, ніж прийнята відповідь.
Петрус Терон

Це спрацювало і для мене, тоді як прийнята відповідь не відповіла
Скіавіні

+1 Хороша відповідь, яка просто працює.
Адам Порожня

3
Переконайтеся, що він $include /etc/inputrcзнаходиться у верхній частині вашого .inputrcфайлу, інакше читання рядків не буде читати загальносистемні прив’язки, а клавіші, як Home та End, будуть порушені.
Джеймс

1
Це має бути прийнята відповідь!
Шейлен

4

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

bindkey "^ [^ [[C" вперед слово # Meta-RightArrow
bindkey "^ [^ [[D" зворотне слово # Meta-LeftArrow

Я також можу піти цим маршрутом. Ліву клавішу ctrl набагато легше вдарити, ніж мета чи клавіші alt (принаймні на моїй клавіатурі). Ну добре.
kbosak

4

У випадку, якщо інші знайдуть це старе питання, як я, більш недавнє рішення:

Ctrl та клавіші зі стрілками не працюють у шпаклівці! Що мені робити?

putty інвертує сенс режиму клавіші курсору на ctrl, який tmux трохи важко виявити. Щоб правильно встановити клавіші ctrl, змініть налаштування терміна, щоб kUP5 (Ctrl-Up тощо) були скоригованими версіями, і відключіть smkx / rmkx, щоб tmux не змінював режим. Наприклад, для цього рядка в .tmux.conf (якщо припустимо, що для TERM встановлено xterm):

встановіть -g термінальні перестановки "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

Зауважте, що це працюватиме лише у форматі 1.2 та вище.

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


0

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


Я не думаю, що проблема є тим, що в inputrc. Я вже спробував декілька можливих рішень, які включали введення записів у inputrc без успіху. Знову виявляється, що неправильний код надсилається на екран для клавіш зі стрілками ctrl. Я також не хочу витрачати на це набагато більше часу, ніж я вже маю, оскільки це справді лише незначні незручності.
kbosak

0

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


Це зовсім не проблема vi / vim, і я побачив лише один варіант у PuTTY для набору символів, який не допоміг.
kbosak

Спробуйте різні параметри в Терміналі-> Клавіатурі-> Функціональних клавіш та клавіатурі. BTW, для мене Ctrl-Arrow також не працює в bash, він робить те саме, що і без натискання Ctrl.
Проф. Моріарті

Так, я спробував безліч удач і комбінацій варіантів. FYI, є кілька записів, які ви можете ввести в inputrc, щоб допомогти з клавішами ctrl-стрілки в bash, але вони не допомагають при використанні екрана.
kbosak

0

У вашій конфігурації шпаклівки під терміналом -> Особливості є кілька прапорців "відключити". Ви можете спробувати відключити клавіші курсору програми або режим клавіатури програми - іноді шпаклівка намагається бути "занадто розумною" і надсилає керуючі символи, несумісні з сервером.


0

Я використовую термінал> клавіатура> функціональні клавіші> Xterm R6, який допомагає функціональним клавішам htop (пошук f4 тощо), які працюють, як очікувалося.

Я дізнався, що замість CTRL + стрілка ALT + стрілка стрибає слова.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.