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).