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

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

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

решение1

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

$ cat
^[[1;5D

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

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

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

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

решение2

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

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

решение3

Сочетание клавиш по умолчанию в Bash для этого backword-wordAlt+ b. Того же результата можно добиться с помощью Esc+ b. Вам стоит попробовать их перед редактированием сочетаний клавиш.

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

Связанный контент