bash别名不自动完成与别名相同
Posted
技术标签:
【中文标题】bash别名不自动完成与别名相同【英文标题】:bash alias not autocompleting same as aliased 【发布时间】:2015-08-05 20:08:36 【问题描述】:我正在尝试用更直观的 watch 命令替换 vlc。
所需的功能
自动补全
观看 /path/to/mo Tab --> 观看 /path/to/movie.avi
执行 vlc
watch /path/to/movie.avi Enter # 这应该运行 `vlc /path/to/movie.avi
目前我在上面使用别名 todo :
~/.bashrc
...
alias watch='vlc'
...
这符合上面的execute vlc
,但没有给出正确的autocompletion
[1]
当前行为
$ vlc /path/to/mo Tab --> vlc /path/to/movie.avi (成功完成)
$ watch /path/to/mo Tab --> watch /path/to/mo(不自动完成..)
正如@GUIDO 提到的,watch
是一个内置命令。
这在某种程度上影响了自动完成。更改为 play
有效,但想了解为什么这不起作用,以及如何解决..
注意
类似于How do I get bash completion to work with aliases?
但定义函数 wrap_alias(在我的 ~/.bashrc 中)并调用
wrap_alias watch vlc ''
无法解决自动完成问题
【问题讨论】:
您知道watch
是一个默认存在于大多数(如果不是所有)Linux 发行版中的命令吗?
How do I get bash completion to work with aliases?的可能重复
@pasabaporaqui 该答案中的 wrap_alias 不能解决问题
【参考方案1】:
如果我们查看命令“vlc”的完成,我们会看到:
$ complete | grep vlc
complete -F _minimal vlc
所以包装函数是“_minimal”。我们可以对新命令使用相同的:
$ alias watch='vlc'
$ complete -F _minimal watch
现在必须解决问题。
【讨论】:
以上是关于bash别名不自动完成与别名相同的主要内容,如果未能解决你的问题,请参考以下文章
如何让 bash 完成以在 Windows 10 bash 中使用别名?
别名 g='git' 并且 bash 完成仍然有效 [重复]