터미널 자동 완성 : 제안 사항 순환


37

우분투 설치에서 이것을 가지고 있었고 Fedora로 전환 한 후 설정하고 싶습니다. 어떻게 잊었습니까 ... 아이디어는 간단합니다 :

터미널을 두 번 tab누를 때 제안을 표시하지 않고 대신 프레스를 눌렀을 때 가능한 모든 제안을 순환하고 싶습니다 tab... Vim에서도 가능합니다.

따라서 입력 gedit a하고 누르면 tab첫 번째 문자가있는 모든 파일이 표시됩니다 a.


답변:


51

이것은 실제로라는 readline 기능 menu-complete입니다. 다음 complete을 실행 하여 탭에 바인딩 할 수 있습니다 (기본값 대체 ).

bind TAB:menu-complete

아마도에 추가하고 싶을 것입니다 ~/.bashrc. 또는에서 bash뿐만 아니라 모든 readline 완료를 위해이를 구성 할 수 있습니다 ~/.inputrc.

또한 bash 매뉴얼의 라인 편집 섹션readline documentation 뿐만 아니라 bind -p(현재 바인딩 표시, 탭을 표시하는 메모 표시 "\C-i") 및 bind -l(바인딩 가능한 모든 기능 나열) 유용한 정보를 찾을 수도 있습니다 .


3
@vanjadjurdjevic : 물론, 다른 키에 바인딩하면됩니다.
derobert

4
menu-complete멋진이지만, 모든 가능한 제안 목록을 숨 깁니다 ;-(인가 그것은 가능한 두 옵션을 통해 목록 및주기를 확인하려면?
치로 틸리新疆改造中心法轮功六四事件

2
@CiroSantilli 六四 事件 法轮功 包 卓 轩 나는 또한 readline 기반 쉘에서이 기능을 좋아한다. 현재 zsh 방법은 매우 시원합니다. 탭의 첫 번째 적중은 모든 가능성을 보여줍니다. 탭의 두 번째 적중은 완료 항목 순환을 시작합니다.
xuhdev

1
의 당신이 사용하는 척하자 cdmenu-complete및 디렉토리를 통해 순환. 해당 디렉토리를 "선택"하고 해당 디렉토리의 내용을 순환하기 위해 어떤 키를 누르십니까? 설정 / 바인드 할 다른 것이 있습니까?
Tony

1
@Tony 네, 삽입하겠습니다. 그러나 슬래시를 사용하면 괜찮습니다. " /usr/local//" 와 같은 경로 는 여전히 완벽히 유효하며 내부에서 메뉴 완성을 시작합니다 /usr/local.
derobert

6

Bash에서 완료 메뉴를 순환하고 항목 메뉴를 표시 할 수도 있습니다. Zsh와 달리 현재 메뉴 항목은 강조 표시되지 않습니다.

추가 ~/.inputrc:

set show-all-if-ambiguous on
set show-all-if-unmodified on
set menu-complete-display-prefix on
"\t": menu-complete
"\e[Z": menu-complete-backward

의 설명서 man bash:

Readline Variables
    menu-complete-display-prefix (Off)
           If set to On, menu completion displays the common prefix of the
           list of possible completions (which may be empty) before cycling
           through the list.
    show-all-if-ambiguous (Off)
           This alters the default behavior of the completion functions. If
           set to On, words which have more than one possible completion
           cause the matches to be listed immediately instead of ringing
           the bell.
    show-all-if-unmodified (Off)
           This alters the default behavior of the completion functions in
           a fashion similar to show-all-if-ambiguous. If set to On, words
           which have more than one possible completion without any
           possible partial completion (the possible completions don't
           share a common prefix) cause the matches to be listed
           immediately instead of ringing the bell.

Completing
    menu-complete
          Similar to complete, but replaces the word to be completed with
          a single match from the list of possible completions. Repeated
          execution of menu-complete steps through the list of possible
          completions, inserting each match in turn. At the end of the list
          of completions, the bell is rung (subject to the setting of
          bell-style) and the original text is restored. An argument of
          n moves n positions forward in the list of matches; a negative
          argument may be used to move backward through the list. This
          command is intended to be bound to TAB, but is unbound by
          default.
    menu-complete-backward
          Identical to menu-complete, but moves backward through the list
          of possible completions, as if menu-complete had been given
          a negative argument. This command is unbound by default.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.