2015-05-10 3 views
5

Я ищу способ подключиться к пользовательской функции завершения bash. Проблема в том, что я хочу эту функцию завершения не только для конкретной команды, но и для всех команд.Выполнение произвольной команды - возможно?

Возможно ли это? Некоторое время оглядевшись, я не мог найти никаких ресурсов в Интернете.

Чтобы уменьшить проблему до самого тривиального случая: можно ли всегда иметь завершение табуляции для строки «foo»?

echo f<tab> Значение будет расширяться в echo foo и ls fo<tab> расширится в ls foo

Для контекста: Я пытаюсь сделать что-то похожее на http://blog.plenz.com/2012-01/zsh-complete-words-from-tmux-pane.html в Баш, но я начинаю бояться, что это не возможно.

+0

Это вы что искали? http://superuser.com/questions/327401/is-there-a-windows-command-line-with-smart-bash-like-autocompletions-command-h –

ответ

4

Вы можете сделать это с -D опцией команды complete:

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

complete -D -F suggest_hello 

Теперь, когда я печатаю echo h<Tab>, я получаю echo hello.

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

Обратите внимание, что это столкнется с завершением bash, так что вы 'd должны выбрать, какой из них использовать. – geirha

+0

@geirha есть способ объединить результаты? – jbnicolai

+0

Спасибо! Именно то, что я искал :) – jbnicolai

Смежные вопросы