Терминал OS X, эквивалентный Ctrl + Left / Ctrl + Right

19

В Windows и Linux я всегда мог нажать ctrl+ или ctrl+, чтобы пропустить слово влево или вправо в терминале. В текстовых редакторах кажется, что + / работает, но в терминале нет кубиков. Я искал в Google и ничего не нашел, кроме страницы Википедии, которая утверждает, что + B/ Fвыполняет работу, но все, что он делает, это печатает символы ∫ и to на моем терминале (или ı и Ï, если я удерживаю ). Есть идеи?

Патрик Крекер
источник

Ответы:

12

Вы можете использовать ключ, но вы должны выбрать опцию, чтобы использовать его в качестве «мета» ключа: альтернативный текст

Как только вы это сделаете, + Fи + Bбудут работать так, как вы ожидаете.

mipadi
источник
Круто ... это сводило меня с ума в течение долгого времени. Благодарю.
Роберт С. Чаччо
2
Также проверьте apple.stackexchange.com/q/1391/115 на возможные «недостатки» этой опции.
Мартин Маркончини
Классный ответ. +1
Soner Gönül
12

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

Кроме того, лично я не заботился о ключе, как обсуждалось ранее; Я хотел сохранить комбинацию ctrl+ /, к которой я привык в Linux.

Чтобы решить эту проблему, я добавил следующее к своему ~/.profile:

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

Обратите внимание, что первые два относятся к bash в терминале ; последние два относятся к bash в iTerm2 и входящих ssh- соединениях. Не спрашивайте меня, почему эмуляция клавиатуры отличается;)

Для справки, я смог найти, какие именно коды клавиш были на самом деле, благодаря подсказке из этого ответаcat > /dev/null стекового потока : вы можете запустить, чтобы отслеживать точные коды клавиш, отправленные во время комбинации клавиш.

(Обратите внимание, что для меня, когда я запускаю cat > /dev/nullи нажимаю ctrl+, он производит ^[[1;5D. Ваш точный код ключа может отличаться , но первый ^[представляется как \e, как показано в моем примере кода.)

Кстати, если вы хотите увидеть все активные сочетания клавиш bash, запустите bind -p.

adamrmcd
источник
Мне нравится использовать xxdдля изучения ввода с клавиатуры. Вы можете видеть символ, отображаемый при вводе, а затем xxdвыдает значение в шестнадцатеричном виде при вводе return.
Крис Пейдж
Отлично! Как раз то, что я искал :) Никогда не удавалось сделать настройки «для конкретного приложения» выше, но это просто работает!
Биско
Убедитесь, что control + left / right не сопоставлены с «переключением пробелов» в ваших sysprefs> клавиатура> сочетания клавиш> подвергать. У меня не было других открытых пространств, поэтому казалось, что мой ввод с клавиатуры не работает.
Судо
6

Начиная с Mac OS X Lion 10.7, Terminal отображает - / на esc+ B/ Fпо умолчанию, так что теперь он встроен в bash и другие программы, которые используют эти emacs-совместимые сочетания клавиш.

Крис Пейдж
источник
5

если вы знаете, как использовать vi, вы также можете включить режим редактирования строки vi, используя set -o viвашу .bash_profileили в любое время в командной строке. Затем вы можете переключаться между командой vi и режимами вставки. Таким образом, вы можете нажать escape, а затем использовать команды vi для навигации по строке:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

Как только вы доберетесь до правильной позиции, вы можете использовать другие команды vi для входа в режим вставки или добавления, удаления символов один за другим и т. Д.

Роберт С Чаччо
источник
Я никогда не знал, что вы можете использовать 0 для начала строки, я всегда использовал ^
Джейсон Салаз
1
@vxjasonxv: да, ^ переходит к первому непробельному символу, 0 переходит к первому столбцу (который вы, вероятно, уже заметили, но я решил, что я добавлю его для других: P)
Роберт С Чаччо
1
О, ВАУ, ЭТО ДАЖЕ ЛУЧШЕ, я еще этого не заметил! О, чувак, эта функциональность (первый не пробел) в ^ всегда меня бесила. Спасибо.
Джейсон Салаз
Конечно, ESC ^замечательно, когда вам это нужно, это раздражает, только когда вы хотите сделать что-то еще полностью :)
ocodo
3

Откройте терминал, перейдите в настройки, клавиатура. В списке вы найдете «курсор Ctrl вправо» и «курсор Ctrl влево».
Измените назначенные им действия на «\ 033f» и «\ 033b» соответственно, и вы сможете использовать ctrl+ и ctrl+ для перемещения без потери клавиши Alt.

Акос
источник
2

Кажется, что esc+ Bи esc+ Fотображаются по умолчанию, чтобы перейти к началу и концу слов. Хотя, для моей системы вы не можете удержаться, escно нужно нажимать ее для каждого слова.

Дерек Моррисон
источник
1
Esc никогда не является модификатором, он просто переходит в режим «Escape», когда вы нажимаете на него, считаете его модальным способом выполнения действий, в отличие от shift / ctrl / meta и т. Д. (В любом случае в схеме Readline).
ocodo
0

Последняя версия ОС отображает это в Spaces. Даже если у вас отключены пробелы, горячие клавиши могут быть замкнуты в этом скрытом месте:

Клавиши курсора Terminal.app: отключить Системные настройки -> Ярлыки -> Управление полетом -> Переместить влево на пробел

Кит Кнаубер
источник