2015-05-10 3 views
5

Ich bin auf der Suche nach einer Möglichkeit, eine benutzerdefinierte Bash-Vervollständigungsfunktion einzubinden. Problem ist, ich möchte diese Vervollständigungsfunktion nicht nur für einen bestimmten Befehl, sondern für alle Befehle.Beliebige Befehlsabarbeitung - möglich?

Ist das überhaupt möglich? Nachdem ich mich eine Weile umgesehen habe, konnte ich online keine Ressourcen finden.

Um das Problem auf den trivialsten Fall zu reduzieren: Wäre es möglich, für die Zeichenfolge 'foo' immer tab-completion zu haben?

Bedeutung echo f<tab> würde in echo foo, erweitern und ls fo<tab> in ls foo

Für Kontext erweitern würde: Ich versuche, etwas ähnliches zu http://blog.plenz.com/2012-01/zsh-complete-words-from-tmux-pane.html in bash zu implementieren, aber ich fange an, es ist nicht möglich, zu befürchten.

+0

Ist das wonach Sie suchen? http://superuser.com/questions/327401/is-there-a-windows-command-line-with-smart-bash-like-autocompletions-command-h –

Antwort

4

Sie können das tun mit der -D Option des complete Befehl:

suggest_hello() 
{ 
    COMPREPLY=(hello) 
    return 0 
} 

complete -D -F suggest_hello 

Nun, wenn ich echo h<Tab> geben, bekomme ich echo hello.

$ help complete 
complete: ... 
... 
     -D apply the completions and actions as the default for commands 
      without any specific completion defined 
... 
+1

Beachten Sie, dass dies mit bash-Vervollständigung kollidieren wird, also Sie Ich muss wählen, welches ich verwenden soll. – geirha

+0

@geirha gibt es eine Möglichkeit, Ergebnisse zusammenzuführen? – jbnicolai

+0

Vielen Dank! Genau das, was ich gesucht habe :) – jbnicolai