zsh中git的大小写不敏感完成

时间:2014-06-11 11:52:19

标签: git zsh zsh-completion

我有zsh设置来执行不区分大小写的完成,但不知何故git完成的文件匹配仍区分大小写:

% zsh -f
% autoload -U compinit && compinit
% zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
% setopt nocasematch
% touch Foo
% ls fo[TAB]
% ls Foo # completes to foo
Foo
% git add fo[TAB] # does not complete

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

试试这个:

% zstyle ':completion:*:*:git:files' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'

我不知道为什么这是必要的,可能是_git完成代码的实现。那东西超过6000行。

答案 1 :(得分:2)

解决方案:从Zsh的'master'分支中取_git。 Zsh今天的最新版本是5.0.5,zsh的主人我从_git处获得了c8e5be9d0fbbc6fb1cf06175b7c3d4757f6d973c

存储库位于git://git.code.sf.net/p/zsh/code

对于git-add这些未发布的更改,完成时不区分大小写。

在Zsh-5.0.5中,git-diff之类的内容不区分大小写,但git-add不是。