Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将文件/文件夹完成添加到git命令的fish shell中?_Git_Autocomplete_Fish - Fatal编程技术网

如何将文件/文件夹完成添加到git命令的fish shell中?

如何将文件/文件夹完成添加到git命令的fish shell中?,git,autocomplete,fish,Git,Autocomplete,Fish,我正在使用fish shell 3.1.0 当我键入git difftool并点击tab时,它会给出本地分支、远程分支、HEAD和ORIG_HEAD的列表,但不会给出当前工作目录中的文件和目录列表 我非常非常频繁地运行一个命令,如git difftool SOME_DIR,或git difftool SOME_FILE,以查看自上次提交以来我在该DIR或该文件中所做的更改。缺少自动补全意味着每次我都必须键入某个\u目录或某个\u文件的全名 有没有办法通过某种方式将文件/文件夹完成添加到fish完

我正在使用fish shell 3.1.0

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

我非常非常频繁地运行一个命令,如
git difftool SOME_DIR
,或
git difftool SOME_FILE
,以查看自上次提交以来我在该DIR或该文件中所做的更改。缺少自动补全意味着每次我都必须键入某个\u目录或某个\u文件的全名


有没有办法通过某种方式将文件/文件夹完成添加到fish完成的
git difftool

这应该可以做到:

complete-cgit-n'\u fish\u seen\u子命令\u from difftool'-a'(\u fish\u complete\u path)'
至于永久保存,将这一行放入
~/.config/fish/completions/git.fish
将禁用git的所有其他完成。因此,您必须首先获取默认完成项的来源:

#~/.config/fish/completions/git.fish
source$\uuuu fish\u data\u dir/completions/git.fish
complete-c git-n'u fish_seen_子命令_from difftool'-a'(u fish_complete_path)'

此外,Alt+L(绑定到
\uuuu fish\u list\u current\u token
)将在光标下列出该token的目录内容(如果它是目录),否则,当前目录的内容将非常有用,如果正常完成的
git difftool
是满屏的,并且您希望快速查看文件。

我终于开始测试了。这似乎没有帮助。无论是临时命令还是添加
git.fish
都没有解决这个问题。在修改了
git.fish
之后,我断开了与远程服务器(SSH)的连接,并重新连接,有效地重新运行了fish,fish应该已经重新读取了该文件。没有帮助。还有其他建议吗?完成文件最初不会加载,一旦在命令后点击tab键,它们就会被读取,然后被缓存。但如果完井根本不起作用,我不确定问题出在哪里:/