Sanırım biraz özelliğini elde etmek için /etc/bash_completion.d/Diğer tamamlama komut dosyalarını etkilemeden COMP_WORDBREAKS nasıl sıfırlanır?
içinde koyacağım bir bash otomatik tamamlama işlevi uygulamak zaman bir şey beni karıştırmayın yok, ben kelime mola kaldırmak istiyor $COMP_WORDBREAKS
değişkeninden iki nokta üst üste (:
) ve $COMP_WORDBREAKS
başlayarak bir eğik çizgi (/
) ekleyin. değer diğer tamamlama komut paylaşılıyor olduğundan
COMP_WORDBREAKS=" /'><=;|&("
_mytool()
{
local cur=${COMP_WORDS[COMP_CWORD]}
compopt -o nospace
# my implement here
COMPREPLY=($(compgen ..........my_implement......... -- $cur))
}
complete -F _mytool mytool
Ancak, doğrudan COMP_WORDBREAKS
sıfırlamak mümkün değil. Tamamlama işlevi çağrıldığında, COMP_WORDS
dizisi zaten çoktan doldurulmuştur, bu nedenle yerel olarak COMP_WORDBREAKS
değişiklikleri hiçbir etkisi yoktur.
Tek bir tamamlama komut dosyasında COMP_WORDBREAKS
'u değiştirmek için herhangi bir çözüm var mı? (- örneğin ssh için küresel bir değişkendir ve diğer tamamlama komut davranışını etkileyen getirebileceğinden) tamamlama komut değiştirme
$ echo $BASH_VERSION
4.2.10(1)-release
Çok teşekkür ederim, bu Ruby on Rails'deki komisyon görevlerim için gerçekten yararlı oldu! Ayrıca, dokümanlardaki E13 bölümünü işaretlediğiniz için teşekkür ederiz. – ndbroadbent
bu sadece düzgün bir şekilde çalıştı, bu satırı koyduğumda "cur =" $ {COMP_WORDS [COMP_CWORD]} "' önce '_get_comp_words_by_ref -n: cur' da bilmenizde fayda var, eğer prev de kullanırsanız, '_get_comp_words_by_ref -n: cur prev' – jmk
Belirsiz tamamlama ve iki kez sekme vurduğumda, bu çözümü kullandığımda yazdıklarıma göre yanlış öneriler alırım. Http: // stackoverflow dosyasına bakın.com/questions/28479216/how-to-give-correct-suggestions-to-tab-tamamlama-my-words-includes-colons – toftis