Терминальная проблема с клавишами Ctrl + Arrow и Shift + Arrow

10

Я использую Mavericks на новом Macbook Pro. Когда я использую Ctrlи Shiftключи вместе с клавишами со стрелками, я получаю какие - то ключевые коды , как выход в терминале. Я почти уверен, что эта проблема является новой и что это не произошло несколько дней назад. Но я не уверен на 100%. Во всяком случае, вот что происходит:

Если я нажимаю Ctrl+ (стрелка влево), ;5Dвыводится в терминал. По аналогии:

  • Ctrl+ (Стрелка вправо) выходы;5C
  • Shift+ (Левая стрелка) выходы;2D
  • Shift+ (Стрелка вправо) выходы;2C

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

Также обратите внимание, что я отключил сочетание клавиш, которое перемещается между рабочими столами с помощью Ctrlклавиш со стрелками +.

Хенрик Сёдерлунд
источник
Ваши клавиши со стрелками переназначены где-то для использования \],-(ascii эквивалент hex 5C 5D 2C 2D).
l'l'l
Не могли бы вы уточнить? Я очень новичок в OSX. Где я буду искать эти переназначения?
Хенрик Сёдерлунд

Ответы:

8

То же самое происходит на моих 10,9 и 10,8 виртуальных машинах. Стрелки управления и стрелки Shift по умолчанию ничего не делают в bash. Где вы вообще использовали стрелки для выбора текста? Emacs или VIM?

Если вы хотите использовать control-left и control-right для перемещения между словами в bash, добавьте эти строки в ~/.inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

Чтобы использовать стрелки в Shift в Emacs, отобразите карты shift-up \e[1;2A, shift-down \e[1;2B, shift-right to \e[1;2Cи shift-left to \e[1;2D. Если при нажатии shift-up появляется сообщение вроде <select> is undefined, попробуйте установить TERMна xterm-vt220.

LRI
источник
Наверное, я ошибся в использовании стрелок для выбора текста. Я разработчик с 13-летним опытом, но это мой первый опыт работы с OSX. Очень запутанный до сих пор.
Хенрик Седерлунд,
Понял .inputrc вещь. Искал файл повсюду, пока не понял, что должен создать его сам. :) Теперь я могу снова переходить между словами. Так что спасибо за это, я отмечаю это как ответ. Еще пара вопросов, так что я на 100% ясен: 1: Я перешел на использование iTerm2. Есть ли способ, используя .inputrc или иным образом, получить Shift + Left и Shift + Right для выделения текста в iTerm2? 2: Вы упомянули emacs и vim. Разве это не просто текстовые редакторы? Как бы я использовал их в качестве терминала?
Хенрик Сёдерлунд
Я не знаю, как заставить shift-left и shift-right изменить выбор в iTerm 2. Я подумал, что вы могли использовать их только в Emacs.
Lri
Хорошо. Мне придется жить без этого сейчас. Спасибо!
Хенрик Сёдерлунд,
1
Это не работает на macos Sierra, Shift + стрелка вправо или Shift + стрелка влево не делает ничего.
Алессандро C
3

Ctrl + Left / Right присутствуют в Терминале (macOS 10.12) по умолчанию (Настройки → Профили → Клавиатура). Я попытался добавить Shift-Up / Down, ~/.inputrcно ничего не произошло.

~/.inputrc:

"\e[1;2A": shift-up
"\e[1;2B": shift-down

Вместо этого я добавил Shift Up / Down программно в настройках терминала. Проблема заключается в том, что он хранится для каждого профиля , из которых у macOS по умолчанию имеется десяток, поэтому вам нужно перебрать все профили (один из которых назван Oceanздесь), чтобы добавить ключи для всех доступных профилей. Я не знаю , если plutilили defaultsиметь некоторую магию , чтобы сделать это легко, или , если вы должны использовать парсер.

~/Library/Preferences/com.apple.Terminal.plist:

"Window Settings" = {
  Ocean = {
    keyMapBoundKeys = {
      "$F700" = "\033[1;2A";
      "$F701" = "\033[1;2B";
forthrin
источник
-1

Альтернатива:

В настройках терминала перейдите в раздел «Дополнительно» и снимите флажок «Вставить переводы строк при возврате каретки».

Затем используйте Sublime, чтобы написать сложный ком

Рохит Соуд
источник