bash 别名不自动完成与别名相同

bash alias not autocompleting same as aliased

我正在尝试用更直观的 watch 命令替换 vlc。

需要的功能

  1. Autocompletion

    watch /path/to/mo Tab --> watch /path/to/movie.avi

  2. Execute vlc

    watch /path/to/movie.avi Enter # this should run `vlc /path/to/movie.avi

目前我正在使用上面的别名 todo :

~/.bashrc

...
alias watch='vlc'
...

这符合上面的 execute vlc,但没有给出正确的 autocompletion [ 1 ]

当前行为

$ vlc /path/to/mo Tab --> vlc /path/to/movie.avi ( successfully completing )

$ watch /path/to/mo Tab --> watch /path/to/mo ( not autocompleting.. )

正如@GUIDO 提到的,watch 是一个内置命令。 这在某种程度上影响了自动完成。更改为 play 有效,但想了解为什么这不起作用,以及如何修复..

类似于How do I get bash completion to work with aliases?

但定义函数 wrap_alias(在我的 ~/.bashrc 中)并调用

wrap_alias watch vlc ''

没有解决自动完成问题

如果我们查看命令 'vlc' 的完成,我们会看到:

$ complete | grep vlc
complete -F _minimal vlc

所以包装函数是“_minimal”。我们可以对新命令使用相同的命令:

$ alias watch='vlc'
$ complete -F _minimal watch 

现在必须解决这个问题。