Hay algo que me confunde cuando implemente una función fiesta de finalización automática, que lo voy a poner en /etc/bash_completion.d/¿Cómo restablecer COMP_WORDBREAKS sin afectar a otro script de finalización?
Con el fin de lograr una cierta característica, quiero eliminar la palabra ruptura caracteres dos puntos (:
) de la variable $COMP_WORDBREAKS
y agregue una barra inclinada (/
) al comienzo de $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
Sin embargo, no puedo restablecer COMP_WORDBREAKS
directamente porque el valor es compartida con otras secuencias de comandos de finalización. En el momento en que se llama a la función de finalización, la matriz COMP_WORDS
variable ya se ha rellenado, por lo que los cambios locales COMP_WORDBREAKS
no tienen ningún efecto.
¿Hay alguna solución para cambiar COMP_WORDBREAKS
en una secuencia de comandos de finalización y no tiene efecto en otra secuencia de comandos?
$ echo $BASH_VERSION
4.2.10(1)-release
¡Muchas gracias, esto fue realmente útil para mis tareas de rake en Ruby on Rails! Además, gracias por señalar la sección E13 en los documentos. – ndbroadbent
esto solo funcionó correctamente, cuando puse esta línea 'cur =" $ {COMP_WORDS [COMP_CWORD]} "' antes de '_get_comp_words_by_ref -n: cur' también es bueno saber, si usa el prev también, puede agregarlo al end '_get_comp_words_by_ref -n: cur prev' – jmk
Cuando tengo terminaciones ambiguas y presiono dos veces la pestaña, obtengo sugerencias incorrectas basadas en lo que he tipeado cuando uso esta solución. Ver http: // stackoverflow.com/questions/28479216/how-to-give-correct-suggestions-to-tab-complete-when-my-words-contains-colons – toftis