2015-05-10 11 views
5

Szukam sposobu na podpięcie niestandardowej funkcji zakończenia basha. Problem polega na tym, że chcę tę funkcję uzupełniania nie tylko dla konkretnego polecenia, ale dla wszystkich poleceń.Arbitralne wykonanie polecenia - możliwe?

Czy to możliwe? Rozglądając się przez chwilę, nie mogłem znaleźć żadnych zasobów w Internecie.

Aby zredukować problem do najbardziej banalnego przypadku: czy zawsze możliwe byłoby uzupełnienie tabulatora dla ciągu "foo"?

Znaczenie echo f<tab> rozwinie się echo foo i ls fo<tab> rozwinie się ls foo

Dla kontekstu: Próbuję zaimplementować coś podobnego do http://blog.plenz.com/2012-01/zsh-complete-words-from-tmux-pane.html w bash, ale zaczynam się obawiać, że nie jest to możliwe.

+0

Czy tego właśnie szukasz? http://superuser.com/questions/327401/is-there-a-windows-command-line-with-smart-bash-like-autocompletions-command-h –

Odpowiedz

4

Można to zrobić z opcją komendy complete-D:

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

complete -D -F suggest_hello 

Teraz gdy wpisuję echo h<Tab>, mam echo hello.

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

Pamiętaj, że będzie to kolidować z zakończeniem basha, więc musiał wybrać, którego użyć. – geirha

+0

@geirha Czy istnieje sposób na połączenie wyników? – jbnicolai

+0

Dziękujemy! Dokładnie to, czego szukałem :) – jbnicolai

Powiązane problemy