2010-04-17 10 views
5

A veces deseo un nombre de archivo en lugar de lo que supone zsh para mí. Por ejemplo, tengo un archivo PNG sin un sufijo .png adecuado, lo que hace que zsh piense que no es una imagen y no lo mostrará cuando escriba Tab para completar los argumentos de display.clave de enlace para completar el nombre de archivo dondequiera que el contexto esté en Zsh

Me pregunto si hay una secuencia de teclas que completa un nombre de archivo en cualquier contexto, como ^XC para _correct_filename, o cómo configurar zsh para hacer la cosa?

Respuesta

7

Puede agregar una clave de unión a hacer lo que quiera:

zle -C complete complete-word complete-files 
bindkey '^X\t' complete 
complete-files() { compadd - $PREFIX* } 

Editar: Agregado $PREFIX

Puede añadir estas líneas a su archivo ~/.zshrc.

Eso hace que la lista de terminación de todos los archivos cuando se pulsa Ctrl - xTab en cada paso en lugar de Tab. Puede elegir otra combinación de teclas que le convenga.

o para hacer ImageMagick terminaciones siempre incluyen todos los archivos, trate de edición (hacer una copia de seguridad primero) el archivo /usr/share/zsh/functions/Completion/Unix/_imagemagick (o similar) y cambiar esto a comentar la línea existente que comienza con _files y añadir la nueva que se muestra:

if (($#)); then 
    # _files "[email protected]" -g "*.(#i)(${~formats//:/|})(-.)" 
    _files "[email protected]" 
    return 
fi 
+0

Útil pero no muy ideal. La función 'complete-files' solo puede completar archivos en el directorio actual. Intenté '_files' en lugar de eso, pero obtuve un' (eval): 1: no se encontraron coincidencias: *: error de todos los archivos. ¿Hay alguna forma de que se comporte como cuando se completa después de 'cat'? Quiero que se complete no solo para 'mostrar', por lo que este último no se adapta a mi situación. – lilydjwg

+0

@lilydjwg: No entiendo. Para mí, las funciones de archivos completos se completan para que se muestren de la misma forma que la finalización normal funciona para cat (excepto los sufijos de tipo de archivo como "@" y "*" no se agregan. Cuando realizo la finalización de tabulación regular para cat Solo obtengo archivos en el directorio actual. –

+0

Quiero decir, si escribo una ruta (ej. ./ o ../ o abc /, con '/' en lo que he tipeado) y luego desencadenó la función, nada será mostrado. – lilydjwg

Cuestiones relacionadas