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


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

могу ли я сделать это в Баш как-то?

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

2 61

2 ответа:

с привязками клавиш 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 -p | grep forward-word

все это довольно чертовски здорово, и я рад, что узнал еще немного власти Баш.