Подтвердить что ты не робот

Bash CTRL для перемещения курсора между словами/строками

Я использую клавишу CTRL, чтобы двигаться быстрее при использовании клавиш со стрелками влево и вправо (идет до конца слова вместо одного char за раз).

Могу ли я сделать это в bash как-то?

Возможно, я мог бы его закодировать, но мне было интересно, есть ли что-то более легкое/уже сделанное.

4b9b3361

Ответ 1

С привязкой клавиш readline по умолчанию, ALT + B возвращает одно слово, ALT + F переходит вперед на одно слово.

Настройка Ubuntu по умолчанию дополнительно предоставляет CTRL + стрелки, как вы привыкли. Они находятся в /etc/inputrc и указаны следующим образом:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

Не знаю, зачем нам три из них...

Ответ 2

Как пояснил Томас, вы можете добавить привязки к /etc/inputrc.

Другая альтернатива, поэтому она загружается при каждом входе в систему, помещает их в ~/.bashrc следующим образом:

#use ctl keys to move forward and back in words
bind '"\eOC":forward-word'
bind '"\eOD":backward-word'

Я узнал, что вы можете использовать cat > /dev/null для просмотра символов, которые посылает ваша клавиатура, например, CTRL + стрелка вправо показывает:

^[OC

где ^[ совпадает с \e, так что, где код приходит из команды bind.

Вы также можете искать привязки следующим образом:

bind -p | grep forward-word

Все это довольно чертовски здорово, и я рад, что узнал еще большую мощность bash.

Ответ 3

.Inputrc в вашем домашнем каталоге приведет к тому, что ctrl + left перестанет работать в Ubuntu (например).

Чтобы все заработало, добавьте следующее в ~/.inputrc:

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

кредит для f.kowal