Bash: Как мне перевести курсор влево по слову?

14

В OSX я могу просто удерживать optionклавишу и нажимать левую клавишу курсора, пока не доберусь до слова, которое нужно отредактировать (или в Vi я могу просто нажать b, но я не смог понять, как это сделать в терминале еще...

японка
источник
Вы можете увидеть полный список привязок readline на этой странице , включая инструкции по настройке собственных привязок.
Джейсонвриан

Ответы:

26

Чтобы установить привязку клавиш: Сначала вы должны выяснить, какие коды клавиш создает последовательность клавиш Ctrl+ Left. Просто используйте команду, catчтобы отключить любое вмешательство в существующие привязки клавиш, а затем введите последовательность клавиш. В моей системе (Linux) это выглядит так:

$ cat
^[[1;5D

Нажмите Ctrl+, dчтобы выйти из кота. Теперь вы узнали, что Ctrl-Left выдает 6 кодов клавиш:

  • Побег (^ [)
  • [
  • 1
  • ;
  • 5
  • D

Теперь вы можете выполнить команду bind:

bind '"\e[1;5D": backward-word'
Даниэль Куллманн
источник
6
Вы можете добавить `` "\ e [1; 5D": backward-word '' в $ HOME / .inputrc для постоянного эффекта, если хотите.
11
@llhuii +1, я забыл упомянуть об этом!
Даниэль Куллманн
2
+1 за самый гибкий способ связывать произвольные комбинации клавиш в любом месте!
Ирфи
14

Функция bash, которую вы хотите backward-word. Вы можете запустить, bind -q backward-wordчтобы получить список ключей, связанных с этой функцией. Один общий обязательный знак Esc+b

Кроме того, многие терминалы поддерживают Ctrl+ Left(та же самая горячая клавиша, которую вы можете использовать в X для перехода назад на слово)

Михаил Мрозек
источник
1
Хорошо, он возвращается, backward-word can be invoked via "\eb".но как мне связать control + Left вместо Esc + b? Кроме того, один из недостатков Esc + b, который я уже вижу, заключается в том, что мне приходится отпускать клавишу Esc каждый раз, когда я могу вернуться к слову, разве нет лучшего способа?
ниппонец
1
Есть ли способ лучше? Естественно: set editing-mode vi:)
jasonwryan
3
@nipponese "esc b" также можно использовать на клавиатуре как ALT-b. Возможно, это должен быть левый или правый альт в зависимости от вашей конфигурации, поэтому попробуйте оба варианта.
Random832
8

Клавиша быстрого доступа по умолчанию в Bash для backword-wordэто Alt+ b. Тот же результат может быть достигнут с Esc+ b. Вы должны попробовать их, прежде чем редактировать ваши сочетания клавиш.

Используйте bindкоманду для редактирования или bind -q [name]для получения текущей комбинации клавиш определенного действия.

Мариус Котофана
источник
2
... и вперед -Alt + f
Путник