Bash 탭 자동 완성이 가능한 모든 파일에서 "begins with" 대신 "contains"와 일치하도록 만듭니다.

Bash 탭 자동 완성이 가능한 모든 파일에서 "begins with" 대신 "contains"와 일치하도록 만듭니다.

TABbash 자동완성이 oh-my-zsh처럼 작동하길 원합니다 .

대소문자를 무시하고 각 탭에서 모두 반복할 수 있는 기능을 추가했습니다.

이제 이름이 지정된 디렉토리에 폴더가 있고 이를 LinuxCommands작성하면 Comm+TAB폴더와 일치하지 않습니다 LinuxCommands.

filename contains keywords" "의 현재 동작 대신 " "를 기반으로 filename starts with keywords입력된 키워드와 폴더 및 파일 이름 과 일치하도록 bash의 동작을 변경하는 방법이 있습니까 ?

나는 이것이 모두 bash이기 때문에 중요하지 않다고 생각합니다. 하지만 혹시 모르니 MacOS Sierra를 사용하고 있습니다.

업데이트 1

현재 내 코드에 이 ~/.bashrc수정 사항이 있습니다.

    _cd_completion() {
        mapfile -t COMPREPLY < <(ls -d */ | grep "${COMP_WORDS[COMP_CWORD]}")
    }
    complete -F _cd_completion cd

    # If ~./inputrc doesn't exist yet, first include the original /etc/inputrc so we don't override it
    if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
    # Add option to ~/.inputrc to enable case-insensitive tab completion
    bind 'set completion-ignore-case On'

    bind 'set show-all-if-ambiguous on'
    bind 'TAB:menu-complete'

혼자서 일을 끝내는 거죠. 하지만 전반적인 성능은 이상합니다. 자동 완성된 다음 자동 완성 후 디렉터리보다 한 수준 아래에 있는 동일한 폴더의 내용을 반복합니다.

예: Folder1, Something2 및 NewFolder3이 있는 경우 을 누르면 cd F+TAB이 표시되고 > cd Folder1/, 다시 누르면 TAB이 표시되고 > cd Folder1/Something2, 다음에 표시되면 > cd Folder1/NewFolder3이렇게 상위 폴더를 계속 반복합니다.

답변1

~/.bashrc 파일에 다음 코드를 추가하여 고유한 bash_completion 규칙을 추가할 수 있습니다.

_cd_completion() {
    mapfile -t COMPREPLY < <(ls -d */ | grep "${COMP_WORDS[COMP_CWORD]}")
}
complete -F _cd_completion cd

다음으로 터미널을 다시 시작하거나 다음 명령을 입력해야 합니다.source ~/.bashrc

시스템 전체에서 사용할 수 있도록 하려면 /usr/share/bash-completion/completions/cd 파일 내의 bash_completion에 규칙을 추가할 수도 있습니다.

답변2

TAB: menu-complete제 경우에는 도움말이 광산에서 주석 처리되었으므로 ~/.inputrc이제 다음과 같습니다.

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
set match-hidden-files off
set page-completions off
set completion-query-items 350
set completion-ignore-case on
set colored-stats on
set show-all-if-ambiguous off
set enable-bracketed-paste on
set history-size -1
set menu-complete-display-prefix on

#set bell-style none
#TAB: menu-complete

관련 정보