【问题标题】:How can I add file/folder completion to fish shell for a git command?如何将文件/文件夹完成添加到 git 命令的fish shell?
【发布时间】:2020-04-21 20:20:54
【问题描述】:

我使用的是鱼壳 3.1.0。

当我输入git difftool 并点击选项卡时,它会给出本地分支、远程分支、HEAD 和 ORIG_HEAD 的列表,但它不会给出当前工作目录中的文件和目录的列表。

我非常非常频繁地运行git difftool SOME_DIRgit difftool SOME_FILE 之类的命令,以查看自上次提交以来我对该目录或该文件所做的更改。缺少自动补全意味着我每次都必须输入 SOME_DIR 或 SOME_FILE 的全名。

有没有办法通过某种方式将文件/文件夹完成添加到鱼的 git difftool 完成中来解决这个问题?

【问题讨论】:

    标签: git autocomplete fish


    【解决方案1】:

    这应该可以解决问题:

    complete -c git -n '__fish_seen_subcommand_from difftool' -a '(__fish_complete_path)'
    

    至于永久保存,将这一行放入~/.config/fish/completions/git.fish 将禁用 git 的所有其他完成。因此,您必须首先获取默认完成:

    # ~/.config/fish/completions/git.fish
    source $__fish_data_dir/completions/git.fish
    complete -c git -n '__fish_seen_subcommand_from difftool' -a '(__fish_complete_path)'
    

    另外,如果是目录,Alt+L(绑定__fish_list_current_token)会列出光标下token的目录内容,否则列出当前目录,如果git difftool 的正常完成是全屏并且您想快速查看文件,则该目录很有用。

    【讨论】:

    • 我终于开始测试这个了。它似乎没有帮助。临时命令和添加 git.fish 均未解决此问题。修改git.fish 后,我断开与远程服务器(SSH)的连接,并重新连接,有效地重新运行fish,它应该重新读取该文件。没有帮助。还有其他建议吗?
    • 完成文件最初不会加载,一旦您在命令后点击选项卡就会读取它们并在此后缓存。但如果完成根本不起作用,我不确定问题可能是什么:/
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 2011-11-13
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2018-09-02
    相关资源
    最近更新 更多