2011-02-08 12 views
13

Digamos que tengo estas variables definidas en mi bashrc:finalización de la pestaña bash sin expansión variable?

i='cgi-bin/internal'; 
e='cgi-bin/external'; 
f='cgi-bin/foo'; 
b='cgi-bin/bar'; 
ad='cgi-bin/admin'; 
#etc... 

Cuando utilizo la variable en la línea de comandos vim $i/edit_TAB que ampliará la variable y la entrada en la línea de comandos convierte vim /www/productX/subdomain_x/cgi-bin/internal/edit_ (correspondiente a cualquier sitio en el que estoy) y luego I TABTAB para obtener las posibles terminaciones.

Eso está bien, la funcionalidad no es el problema. Es solo que puede resultar molesto ver la ruta completa cada vez en lugar de solo el valor de la variable.

¿Hay alguna manera de no expandir las variables de bash en la línea de comandos sin comprometer la funcionalidad?
¿Es la finalización de bash lo que hace esto?

El resultado deseado sería $i sin expandir a su valor (visual) o $i expandiéndose a una ruta relativa en lugar de a la ruta completa.

+0

¿Cuándo ves esto? Las variables no se expanden para mí a menos que haga 'shell-expand-line' (Ctrl-Alt-e) o' complete-variable' (Alt- $). ¿Tiene Ctrl-i (o Esc-Esc) vinculado de manera diferente que el predeterminado? ¿Cuál es el resultado de 'bind -p | grep 'complete $''? –

+0

ack, lo siento, parece que mi se ha rayado de la publicación original ... – Andrew

+0

¿Cuál es el resultado de 'bind -p | grep 'complete $''? Si '$ i' contiene" cgi-bin/internal/"¿de dónde viene"/www/productX/subdomain_x/"? –

Respuesta

2

Puede intentar usar zsh en lugar de bash. En zsh,

vim $i[tab] 

expande $ i para una ruta relativa

(también Oh My Zsh es bastante útil para personalizar zsh)

+0

+1 para zsh, aunque esto no responde directamente la pregunta. – jli

+0

-1 Una respuesta que no responde a nada ... simplemente muestre su preferencia por otro caparazón ... cambiar un caparazón no es algo trivial dependiendo de cómo es su entorno, quién lo usa, quién le da mantenimiento. . – ceinmart

0

No estoy seguro de qué otra configuración que utiliza en sus scripts de inicio de fiesta, pero para mí el siguiente comando de bash hace el truco:

complete -r -v 
Cuestiones relacionadas