~/.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
답변3
생선껍질 정말 추천드려요. (https://fishshell.com/)
퍼지 매칭과 강력한 이력 검색/순회를 지원합니다. 다른 기능도 포함되어 있습니다.
내장된 퍼지 검색이 잘 작동하지만 해당 이벤트는 필요한 경우 사용자 정의 완성을 지원합니다. 자세한 내용은 여기를 참조하세요:https://fishshell.com/docs/current/index.html#tab-completion