bash 别名不自动完成与别名相同
bash alias not autocompleting same as aliased
我正在尝试用更直观的 watch 命令替换 vlc。
需要的功能
Autocompletion
watch /path/to/mo Tab --> watch /path/to/movie.avi
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
现在必须解决这个问题。
我正在尝试用更直观的 watch 命令替换 vlc。
需要的功能
Autocompletion
watch /path/to/mo Tab --> watch /path/to/movie.avi
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
现在必须解决这个问题。