내가 몇 가지 기능을 달성하기 위해 /etc/bash_completion.d/다른 완료 스크립트에 영향을주지 않고 COMP_WORDBREAKS를 재설정하는 방법은 무엇입니까?
에 넣어거야 배쉬 자동 완성 기능을 구현할 때 무언가가 나를 혼동이있다, 나는 단어 나누기를 제거하려면 문자 $COMP_WORDBREAKS
에서 콜론 (:
)을 입력하고 시작 부분에 슬래시 (/
)를 추가하십시오 ($COMP_WORDBREAKS
). 값이 다른 완료 스크립트와 공유하기 때문에
COMP_WORDBREAKS=" /'><=;|&("
_mytool()
{
local cur=${COMP_WORDS[COMP_CWORD]}
compopt -o nospace
# my implement here
COMPREPLY=($(compgen ..........my_implement......... -- $cur))
}
complete -F _mytool mytool
그러나, 나는 직접 COMP_WORDBREAKS
를 재설정 할 수 없습니다. 완료 함수가 호출 될 때까지 변수 COMP_WORDS
배열이 이미 채워 졌으므로 로컬 변경은 COMP_WORDBREAKS
이 적용되지 않습니다.
하나의 완료 스크립트에서 COMP_WORDBREAKS
을 변경하기위한 해결책이 있습니까? 다른 스크립트에는 아무런 영향이 없습니까? (- 예를 들어 SSH에 대한이 전역 변수이며 다른 완료 스크립트의 동작에 영향을 미칠 수 있기 때문에) 당신의 완료 스크립트 수정
$ echo $BASH_VERSION
4.2.10(1)-release
정말 고맙습니다. Ruby on Rails에서 내 레이크 작업 완료에 정말 유용했습니다! 또한 문서에서 E13 절을 지적 해 주셔서 감사합니다. – ndbroadbent
이것은'cur = "$ {COMP_WORDS [COMP_CWORD]}"''이 줄을'_get_comp_words_by_ref -n : cur' 앞에 넣어두면 올바르게 작동합니다. 이전에 사용하고있는 경우에도이 줄을 추가 할 수 있습니다. end'_get_comp_words_by_ref -n : cur prev' – jmk
모호한 완료를하고 탭을 두 번 누르면이 솔루션을 사용할 때 입력 한 내용을 기반으로 잘못된 제안이 표시됩니다. http : // stackoverflow를 참조하십시오.com/questions/28479216/내말이 정확한 ~ 제안 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 내 단어 포함 콜론 – toftis