밑줄이 포함된 자동 완성 파일 이름

밑줄이 포함된 자동 완성 파일 이름

~/.bashrc예를 들어 이름이 지정된 파일이 있고 - - -를 name_separated_by_under_score누른 다음 [TAB]을 누르면 쉘이 파일 이름을 자동 완성하려면 무엇을 추가해야 합니까 ? (이 옵션을 본 기억이 나네요)nsbus

답변1

Emacs는 매우 공격적인 것 같습니다."부분 완성" 완료 시제.

종종 지정된 완료모든 명령. 여기서는 bash-4.1 이상이 필요한 기본 완성을 사용합니다 complete -D(단, 주문형 완성 핸들러는 로드하지 않음). 이는 bash-completion 패키지나 기타 명령별 완성(해당 항목이 있는 경우)에서는 제대로 작동하지 않습니다(또는 전혀). 실제로 명령도 완료되지 않고 매개변수만 완료됩니다.

function _bc_magicmatch() {
  local cur=${COMP_WORDS[COMP_CWORD]} # the current token ($2 iff bash>=4.3)
  local pat prefix

  ## kick-in condition
  [[ $cur =~ ^(.*/)?([^/]+) ]] && {    # match (path/)(name)

    prefix=${BASH_REMATCH[1]}
    pat=${BASH_REMATCH[2]}
    prefix=$(compgen -W "$prefix")     # expand specials, like ~

    ## first form: "-" in input for "_" in expanded names
    pat="${pat//-/*_}*"  # sprinkle "*" in to allow expansion

    ## second form: "-" in input matches [_-] in expanded names
    #pat="${pat//-/*[_-]}*"  # sprinkle "*" in to allow expansion

    ## third form: for no "-" at all in input
    #[[ $pat =~ ${pat//?/(.)} ]]  # split into character array
    #IFS="*" pat="${BASH_REMATCH[*]:1}*" # add IFS separator, skipping index 0

    readarray -t COMPREPLY  < <(compgen -G "${prefix:+$prefix}$pat")
    return
  }
  COMPREPLY=() # revert to completion defaults
}

# bind completion function
complete -D -o bashdefault -o default -o nospace -F _bc_magicmatch
## or selectively, for a subset of commands (works with bash<4.1)
# complete -o bashdefault -o default -o nospace -F _bc_magicmatch cmd1 cmd2 ...

실행 조건의 모드는 활성화를 제한할 수 있으며, 이는 .-.- 최소 두 개의 하이픈 부분 으로 변경되거나 .+-(.+-)+여러 주인공을 허용하도록(Emacs 동작과 유사) 가능합니다. 확장을 수정할 수도 있습니다 pat. 위에서 활성화되지 않은 대체 두 번째 형식이 허용되거나 -확장 _일치 이름에 허용됩니다.

약간의 추가 작업이 필요한 입력에 구분 기호를 전혀 원하지 않는 경우(예제에서 문자 사이에 하이픈을 원하는지 여부가 명확하지 않음) 위의 세 번째 형식을 사용하십시오. 바라보다이 답변//?/(.)/stackoverflow에서는 및 의 사용법을 설명합니다 BASH_REMATCH.

or를 compgen -W포함한 모든 단어를 확장합니다 ( 명령 프롬프트에 입력한 코드만 실행하므로 "위험"하지 않음). 전역변수만 확장되며, 전역변수가 아닐 수도 있습니다 .$()``compgen -G~~user

답변2

보세요fzf. 훌륭한 독립 실행형 도구일 뿐만 아니라 다음을 지원합니다."흐리게" 완료설명하신 내용과 비슷합니다.

답변3

생선껍질 정말 추천드려요. (https://fishshell.com/)

퍼지 매칭과 강력한 이력 검색/순회를 지원합니다. 다른 기능도 포함되어 있습니다.

내장된 퍼지 검색이 잘 작동하지만 해당 이벤트는 필요한 경우 사용자 정의 완성을 지원합니다. 자세한 내용은 여기를 참조하세요:https://fishshell.com/docs/current/index.html#tab-completion

관련 정보