2010-04-17 11 views
5

A volte voglio un nome file invece di quello che zsh indovina per me. Ad esempio, ho un file PNG senza il suffisso .png appropriato, il che fa credere a zsh che non è un'immagine e non lo elencherà quando digito Tab per completare gli argomenti di display.chiave di collegamento per completare il nome file ovunque il contesto sia in Zsh

Mi chiedo se esiste una sequenza di tasti che completa per un nome file ovunque sia il contesto, ad esempio ^XC per _correct_filename o come configurare zsh per eseguire la cosa?

risposta

7

È possibile aggiungere una chiave vincolante per fare ciò che si vuole:

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

Edit: Aggiunto $PREFIX

È possibile aggiungere queste righe al file ~/.zshrc.

che rende l'elenco di completamento di tutti i file quando si preme CTRL - xTab ad ogni passo, invece di Tab. Potresti scegliere un'altra combinazione di tasti che ti si addice.

o per effettuare ImageMagick completamenti sempre includere tutti i file, provare la modifica (fare un backup prima) il file /usr/share/zsh/functions/Completion/Unix/_imagemagick (o simili) e cambiare questo per commentare la linea esistente che inizia con _files e aggiungere quello nuovo mostrato:

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

Utile ma non molto ideale. La funzione 'complete-files' può solo completare i file nella directory corrente. Ho provato '_files' invece di aver ottenuto un errore' (eval): 1: no matches: *: all-files'. C'è un modo per farlo comportarsi come quando si completa dopo 'cat'? Voglio completarlo non solo per 'display', quindi quest'ultimo non è adatto alla mia situazione. – lilydjwg

+0

@lilydjwg: non capisco. Per me, le funzioni complete dei file con il completamento per la visualizzazione nello stesso modo in cui il normale completamento funziona per cat (tranne i suffissi di tipo file come "@" e "*" non vengono aggiunti. Ho solo i file nella directory corrente. –

+0

Voglio dire, se scrivo un percorso (ad esempio ./ o ../ o abc /, con '/' in quello che ho digitato) e poi faccio scattare la funzione, nulla sarà mostrato – lilydjwg

Problemi correlati