【问题标题】:bash alias not autocompleting same as aliasedbash别名不自动完成与别名相同
【发布时间】:2015-08-05 20:08:36
【问题描述】:

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

所需的功能

  1. 自动补全

    观看 /path/to/mo Tab --> 观看 /path/to/movie.avi

  2. 执行 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 ''

无法解决自动完成问题

【问题讨论】:

标签: bash autocomplete alias


【解决方案1】:

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

$ complete | grep vlc
complete -F _minimal vlc

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

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

现在必须解决问题。

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2021-05-27
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多