2010-05-10 23 views
12

añadí finalización fiesta de Maven después de la documentación:finalización Bash para Maven escapa de colon

http://maven.apache.org/guides/mini/guide-bash-m2-completion.html

Todo funciona bien a excepción de las metas que utilizan dos puntos. Por ejemplo, en lugar de

mvn eclipse:eclipse 

finalización escapa el colon

mvn eclipse\:eclipse 

Alguna sugerencia de cómo esto se puede solucionar? Estoy usando Ubuntu 8.10 (2.6.27-17-generic) y

$ fiesta -versión
GNU bash, versión 3.2.39 (1) -release (i486-pc-linux-gnu)

Respuesta

13

De Bash FAQ E13.

Justo después del comando complete en el guión se ha vinculado a, ejecute este comando para eliminar los dos puntos de la lista de caracteres de salto de palabras completado:

COMP_WORDBREAKS=${COMP_WORDBREAKS//:} 
+0

¡Gracias! Esto me ha estado molestando por algún tiempo :) – armandino

+2

Una advertencia de que probablemente no deberías hacer eso, ya que rompe las funciones de finalización que dependen del comportamiento predeterminado (como scp). Consulte https://bugs.launchpad.net/gvfs/+bug/290784 para discusión – gfxmonk

+1

Acepte @gfxmonk, esto no es apropiado, ya que se completa para otras funciones –

2

Alguna sugerencia de cómo esto se puede solucionar? Estoy usando Ubuntu 8.10 (2.6.27-17-generic) y

La respuesta de Dennis es definitivamente correcta.

Pero para el registro, hay un problema registrado (MNG-3928) para mejorar la documentación sobre la integración de Maven con bash. El problema tiene una secuencia de comandos adjunta, que es una versión mejorada de la que está actualmente en línea y que simplemente funciona. Es posible que desee intentarlo.

Personalmente, utilizo el Bash Completion script from Ludovic Claude's PPA (el que está incluido en el paquete maven de Ubuntu) que descargo directamente del bazar (su correo electrónico es directo download link a la revisión HEAD). Es simplemente increíble.

6

Aquí es una cuestión relacionada y otra solución sugerida:

How to reset COMP_WORDBREAKS without effecting other completion script?

Como se dijo antes, la solución más simple es el de alterar COMP_WORDBREAKS. Sin embargo, modificar COMP_WORDBREAKS en su script de finalización no es seguro (ya que es una variable global y tiene el efecto secundario de afectar el comportamiento de otros scripts de finalización, por ejemplo, scp).

Por lo tanto, bash completion ofrece algunos métodos de ayuda que puede utilizar para lograr su objetivo de una manera mejor y más segura. se añadieron

Dos métodos de ayuda en Bash completion 1.2 para esto:

  • _get_comp_words_by_ref con la opción -n EXCLUDE
    • hace correr la voz-a-completa sin tener en cuenta los caracteres en EXCLUDE como palabra rompe
  • __ltrim_colon_completions

lo tanto, aquí es un ejemplo básico de cómo un mango de dos puntos (:) en las palabras de conclusión:

_mytool() 
{ 
    local cur 
    _get_comp_words_by_ref -n : cur 

    # my implementation here 

    __ltrim_colon_completions "$cur" 
} 
complete -F _mytool mytool 

Utilizando los métodos de ayuda simplifica también el guión terminación y garantiza que obtendrá el mismo comportamiento en cualquier entorno (bash-3 o bash-4).

También puede echar un vistazo a man o perl los guiones de terminación en /etc/bash_completion.d para ver cómo se utilizan los métodos de ayuda anteriores para resolver este problema.

Cuestiones relacionadas