首页 > 解决方案 > 如何将文件/文件夹完成添加到 git 命令的fish shell?

问题描述

我正在使用鱼壳 3.1.0。

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

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

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

标签: gitautocompletefish

解决方案


这应该可以解决问题:

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)将列出光标下令牌的目录内容,否则列出当前目录的内容,如果 的正常完成git difftool是全屏并且您想快速浏览一下偷看文件。


推荐阅读