Проблема з терміналом для клавіш Ctrl + Arrow та Shift + Arrow


10

Я запускаю Mavericks на новому Macbook Pro. Коли я використовую клавіші Ctrlі Shiftразом із клавішами зі стрілками, я отримую якісь коди ключів як вихід у терміналі. Я майже впевнений, що ця проблема нова і що вона не сталася кілька днів тому. Але я не на 100% впевнений. У будь-якому випадку, ось що відбувається:

Якщо я натискаю Ctrl+ (стрілка вліво), ;5Dвиводиться в термінал. Аналогічно:

  • Ctrl+ (Стрілка вправо);5C
  • Shift+ (Стрілка вліво);2D
  • Shift+ (Стрілка вправо);2C

Як я вже згадував, я майже впевнений, що до сьогодні я міг використовувати ці ярлики для переміщення між словами та вибору тексту. Хтось бачив це раніше? Я вже переглянув деякі існуючі запитання про ярлики клавіш зі стрілками, але я не знайшов посилань на цю точну проблему.

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


Ваші клавіші зі стрілками перезаписані десь для використання \],-(еквівалент ascii з шестигранної 5C 5D 2C 2D).
l'L'l

Чи хотіли б ви детальніше розібратися? Я дуже новачок в OSX. Де я б шукав ці перепланування?
Генрік Седерлунд

Відповіді:


8

Те саме відбувається на моїх 10,9 та 10,8 ВМ. Стрілки керування та стрілки shift нічого не роблять за замовчуванням у bash. Де ви навіть використовували стрілки зсуву для вибору тексту? emacs чи vim?

Якщо ви хочете використовувати ліворуч та керування праворуч для переміщення між словами в bash, додайте ці рядки до ~/.inputrc:

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

Щоб використовувати стрілки shift в Emacs, переміщуйте карту вгору \e[1;2A, перехід вниз \e[1;2B, зсув вправо до \e[1;2Cта зсув вліво до \e[1;2D. Якщо натискання кнопки "Зміна" призводить до появи типу повідомлення <select> is undefined, спробуйте встановити TERMзначення xterm-vt220.


Напевно, я, можливо, помилявся з використанням стрілок shift для вибору тексту. Я розробник з 13-річним досвідом роботи, але це мій перший досвід роботи на OSX. Дуже заплутаний поки що.
Генрік Седерлунд

Зрозуміла річ .inputrc. Шукав файл скрізь, поки не зрозумів, що мушу створити його сам. :) Тепер я можу знову переходити між словами. Тож дякую за це, я позначаю це як відповідь. Ще кілька запитань, тому я на 100% зрозумілий: 1: Зараз я перейшов до використання iTerm2. Чи є якийсь спосіб, використовуючи .inputrc або інше, щоб отримати Shift + Вліво та Shift + Вправо для вибору тексту в iTerm2? 2: Ви згадали про emacs та vim. Це не просто текстові редактори? Як я можу використовувати їх як термінал?
Генрік Седерлунд

Я не знаю жодного способу змусити зміни вліво і вправо змінити вибір в iTerm 2. Я подумав, що ви могли використовувати їх просто в Emacs.
Лрі

Добре. Мені доведеться зараз жити без цього. Дякую!
Генрік Седерлунд

1
Це не працює на macos Sierra, Shift + Стрілка вправо або Shift + Стрілка вліво нічого не робить.
Алессандро C

3

У терміналі (macOS 10.12) за замовчуванням присутні Ctrl + Вліво / Вправо (Налаштування → Профілі → Клавіатура). Я спробував додати Shift-Up / Down, ~/.inputrcале нічого не сталося.

~/.inputrc:

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

Натомість я додав Shift Up / Down програмно в налаштуваннях терміналів. Проблема полягає в тому, що це зберігається в одному профілі , з яких macOS за замовчуванням має десяток, тому вам доведеться перебирати всі профілі (один Oceanтут названий ), щоб додати ключі для всіх доступних профілів. Я не знаю, plutilчи defaultsє чи є якась магія, щоб зробити це просто, чи вам доведеться використовувати парсер XML.

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

"Window Settings" = {
  Ocean = {
    keyMapBoundKeys = {
      "$F700" = "\033[1;2A";
      "$F701" = "\033[1;2B";

-1

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

У налаштуваннях терміналу перейдіть до пункту «Додатково» та зніміть позначку «Вставити нові рядки як повернення каретки».

Потім використовуйте Sublime, щоб виписати складні ком

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