Я сьогодні на перекладі, ось ще одне питання:
Як же, коли я їх вкладаю .inputrc
, вони обидва роблять те саме?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
тобто вони обидва роблять все, що каже останній.
Я сьогодні на перекладі, ось ще одне питання:
Як же, коли я їх вкладаю .inputrc
, вони обидва роблять те саме?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
тобто вони обидва роблять все, що каже останній.
Відповіді:
Програма Readline нічого не знає про названий модифікатор Shift
і тихо ігнорує невідомі імена модифікатора. Спробуйте wibble-TAB
.
Щоб прив’язати дію до Shift+ Tab, потрібно з’ясувати, яку послідовність евакуації надсилає ваш термінал. У bash запустіть cat
і введіть Ctrl+, Vа потім Shift+ Tab. Це дозволить вставити послідовність втечі буквально. Цілком ймовірно, що першим персонажем буде символ втечі, показаний як ^[
; різні термінали мають різні послідовності відходу, але загальними можливостями є ␛[Z
(тобто втеча, ліва дужка, велика величина Z) та ␛␉
(тобто втеча, вкладка). Прив’яжіть ключ належним чином ~/.inputrc
(де \e
означає символ втечі).
"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward
cat
дозволяє уникнути будь-якого прив'язки. Зазвичай bash має те саме Ctrl + V прив'язування, щоб буквально вставити наступний символ, щоб це не мало значення.
$ cat <Enter> <Shift+Tab>
які дисплеї ^[[Z
Чи завжди я дописую \e
перед послідовністю, яку отримую Ctrl+V
? Чи це означає:"\e^[[Z": shell-expand-command
^[
на `\ e`
На Xubuntu 16.04, термінал: xfce4-terminal 0.6.3, оболонка: bash
Для роботи Shift+ Tabмені довелося використовувати:
bind '"\e[Z": menu-complete-backward'
~/.bash_profile
використанні: bind TAB:menu-complete
і bind '"\e[Z": menu-complete-backward'
(зверніть увагу на використання одинарних та подвійних лапок!).
^[Z
працював на мене (БАШ); дякую за детальну відповідь! :)