.inputrc TAB이 예상대로 작동하지 않습니다


11

나는 오늘 롤에 있습니다. 여기 또 다른 질문이 있습니다.

내가 이것들을 넣을 때 어떻게됩니까 .inputrc, 둘 다 같은 일을합니까?

TAB: menu-complete
Shift-TAB: menu-complete-reverse

즉 그들은 둘 다 마지막 말을합니다.

답변:


15

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

1
아, ^[Z나를 위해 일했다 (BASH); 자세한 답변 주셔서 감사합니다! :)
user541686

'cat'앞이나 뒤에 Enter를 누르십니까? 왜 '고양이'가 필요한가요? 'cat'없이 동일한 이스케이프 시퀀스를 얻는 것 같습니다.
dougkramer

@ douglas.kramer Running cat은 bash 바인딩을 피합니다. 일반적으로 bash는 문자 그대로 다음 문자를 삽입하는 동일한 Ctrl + V 바인딩을 사용하므로 차이가 없습니다.
Gilles 'SO- 악마 그만

Shift + Tab을 'shell-expand-command'에 바인딩하는 데 문제가 있습니다. 나는 얻는다 : $ cat <Enter> <Shift+Tab>어느 표시 ^[[Z 나는 항상 \e내가 얻는 순서보다 먼저 추가 Ctrl+V합니까? 이은에 번역 하는가"\e^[[Z": shell-expand-command
dougkramer

@dou` ^[\ e`로 대체
Gilles 'SO- 그만 존재'

4

Xubuntu 16.04에서 터미널 : xfce4-terminal 0.6.3, shell : bash

들어 Shift+이 Tab일을 내가 사용했다 :

bind '"\e[Z": menu-complete-backward'

~/.bash_profile사용 : bind TAB:menu-completebind '"\e[Z": menu-complete-backward'(단일 및 이중 따옴표의 사용에주의!).
Erik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.