
사용 상황에 따라 "탭"의 두 가지 동작을 원합니다. 사용자가 "mybashfunction" 명령의 인수를 완료하려고 할 때를 제외하고 언제든지
기본 동작을 유지하고 싶습니다 . 이 경우 완성을 생성하기 위해 특수 함수를 호출하지만 "탭"이 설정된 bind '"\t":complete'
것처럼 작동하고 싶습니다 .bind '"\t":menu-complete'
답변1
나는 그 readline 라이브러리가 한 번에 한 종류의 탭 완성 동작만 지원한다고 믿습니다.
답변2
이것이 당신이 찾고 있는 것인가요?Bash: 몇 가지 일치 항목에 대해서만 메뉴 완료
답변3
bash 전체 규칙을 사용하면 이를 달성할 수 있습니다.
_myfunc() {
_opts="zero one two"
# COMPREPLY is bash built-in for array of possible completions
COMPREPLY=()
# cur & prev are current & previous words typed in shell
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
COMPREPLY=( $( compgen -W "${_opts}" -- ${cur} ))
return 0
}
complete -F _myfunc myfunc
이것은 bash의 정상적인 완료에는 영향을 미치지 않지만 완료 myfunc를 탭하면 가능한 완료로 "0 1 2"가 표시됩니다.
편집: 아 예, 이것을 bashrc 또는 이와 유사한 곳에 넣어서 새 쉘에서 소스를 얻으세요.