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

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

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

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

4 ответа

Решение

При связывании клавиш 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

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

Как объяснил Томас, вы можете добавить привязки к /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.

.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

Добавлять $include /etc/inputrc

в ~/.inputrc

Работал с выпуском CentOS Linux 8.2.2004 (Core).

Другие вопросы по тегам