Я сьогодні на перекладі, ось ще одне питання:
Як же, коли я їх вкладаю .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працював на мене (БАШ); дякую за детальну відповідь! :)