Проблема з терміналом для клавіш 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.