Ctrl + клавіша зі стрілками вліво / вправо


25

Після останнього оновлення системи команда ctrl + ліва / права стрілка на терміналі zsh нічого не робить. Також у ctrl + u є щось не так, оскільки зазвичай цю команду стирають з курсору на початку рядка, а тепер видаляють весь рядок. Хтось знає, як вирішити ці проблеми? Дякую вам всім.


Ви знайшли прийнятну відповідь? Я думаю, що відповідь Гонкало чудова.
Лео Леопольд Герц 준영

Відповіді:


44

FWIW, це те, що працювало на моєму середовищі (rhel5.x), використовуючи zsh за замовчуванням.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

5
^[^[[Dі ^[^[[C, відповідно, для OSX
Jon z

1
Підтверджено, що пропозиція Гонкало працює також у Debian 8.5. Мені просто цікаво, чому цей код не вбудований .zshrcза замовчуванням.
Лео Леопольд Герц 준영

Працює як шарм у Ubuntu Artful, дякую!
Конрад Гарус

На випадок, якщо хтось захоче використовувати $terminfoзамість послідовностей евакуації: ключі $terminfo[kLFT5]і $terminfo[kRIT5]працював для мене
Griddo

14

Ctrl + U швидше за все, тому що ви маєте курсор в кінці рядка. По-друге, яку версію Gentoo ви називаєте "останнім оновленням системи"?

І що б ви хотіли зробити ctrl + зліва / справа?

  • Додати в налаштування zsh:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • І зі старого брухту я знайшов (може допомогти):

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

  • або перегляньте це посилання, яке повинно вам допомогти?

Примітка. Якщо конфігурація працює, але передбачувані клавіші не виконують те, що ви хочете, можливо, тому, що визначення ключа відрізняється від вашого і мого, зробіть це: cat > /dev/null і натисніть клавіші, які ви хочете отримати, і виправте їх відповідно.


1
"Ctrl + U, швидше за все, тому, що у вас є курсор в кінці рядка." Звичайно, я маю на увазі, коли мій курсор знаходиться посередині. І що б ви хотіли, щоб це було зроблено ctrl + зліва / справа? " зазвичай ctrl + стрілка вліво: пропустити слово, переходячи ліворуч тощо ...
riskio

І яку оболонку / термінал ви використовуєте? Ви впевнені, що використовуєте Emacs або інший термінал, який ви зазвичай використовуєте та / bin / bash? ти біжиш через екран?
Тортується

1
будь ласка, прочитайте питання є ..
riskio

1
@Masi Не впевнений, я відповів за два роки до нього, і наші відповіді майже однакові, я просто показав два різні способи це зробити .. і ви можете об'єднати їх обох, щоб поєднати те, що він написав.
Тортується

1
@Masi Все, що я знаю, - це тоді (пам’ятаю, 2010-2012 рр .. Це було дуже давно) ці двоє (і це комбінація) працювали для мене на багатьох різних системах. Я був і в Unix, і в Linux (і він був на Gentoo, операційній версії ОС). І досі є багато слідів цього на багатьох прикладах. Таких, як це сховище. Тепер, знову ж таки, я не зовсім впевнений, чому, але він працював принаймні на двох машинах, тому я подумав, що поділюсь цим. І впевнений, що його сьогодні зрозуміліше, і я не проти того, щоб він отримав усі голоси. Це спадщина.
Тортується

5

Те, що працює , безпосередньо не залежить від дистрибутива (Gentoo, Debian, RHEL тощо) або оболонки (ZSH, KSH, BASH) - це залежить від того, який terminal emulatorвикористовується та його параметрів: konsole, terminator, urxvt, lx-terminal тощо. Дистрибутив може мати значення, якщо він використовує іншу стандартну конфігурацію оболонки (fx.

Ось декілька конкретних термінальних рішень для емулятора:

urxvt / rxvt-unicode (і, можливо, інші):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

термінатор, konsole та xterm (а може й інші):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Для більш загального підходу, коли ви запускаєте свій термінал, натисніть CTRL-V, а потім комбінацію клавіш, яку ви хочете, щоб отримати код втечі (ім'я) - в цьому випадку комбінації клавіш CTRL-leftarrow і CTRL-rightarrow - і поставте вихід для кожного Ключове поєднання між цитатами.


1
Ви спробували пропозицію CTRL-V? Можливо, ваш термінал трактує натискання клавіш по-різному, тому ключ потрібно прив’язати до різних "символів"?
miyalys

1
Я оновив свою відповідь. Існує кілька рішень залежно від terminal emulatorвикористовуваного. Дистрибутив або оболонка не мають значення. Можливо, тому й не в .zshrc, оскільки те, що працює для одного термінального емулятора, не працює для іншого. Але це, ймовірно, може бути вирішене, якщо zshrc fx. читати змінну середовища $ TERM і застосовувати різні настройки bindkey на основі результату.
miyalys

2

Вирішено.

Використовуваний термінал: Konsole .

Для вирішення: клацніть правою кнопкою миші на терміналі (або налаштуваннях у меню) -> змінити поточний профіль -> відображення клавіатури -> змінити на стандартний (xfree4)


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