2

我有 zsh setup 来执行不区分大小写的完成,但不知何故,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

有任何想法吗?

4

2 回答 2

2

试试这个:

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

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

于 2014-06-24T15:42:55.233 回答
2

解决方案:_git取自 Zsh 的 'master' 分支。今天最新的zsh版本是5.0.5,我拿的zsh的master_git是在commit c8e5be9d0fbbc6fb1cf06175b7c3d4757f6d973c

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

使用这些未发布的更改完成git-add不区分大小写。

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

于 2014-07-03T12:14:24.503 回答