禁用“oh-my-zsh”SVN 完成

禁用“oh-my-zsh”SVN 完成

我使用的是 Zsh 版本:4.3.11哦我的天啊框架。

当与“oh-my-zsh”结合使用时,Zsh 会在命令执行期间按下 TAB 键时尝试自动完成 SVN(以及 Git)命令。由于它显然在幕后进行了一些解析魔法,因此在大型存储库中自动完成 SVN 命令会带来显著的延迟。

svn add a[TAB]
* ~2-3 second delay *
svn add apps/

这让我走到了边缘,经过几个月对 Zsh 的赞美之后,我暂时恢复使用 Bash,因为无法在一个特定的存储库中使用 shell 实在是太荒谬了。

笔记:
这里还有两个额外的因素,虽然我不确定它们的重要性,但我还是会列出它们:

  • 这是通过 SSH 完成的
  • 常规文件名自动完成是完全即时的。只有 SVN 命令期间的文件名自动完成会滞后。

答案1

我很确定这不是一个好方法,但你可以svn用以下方法覆盖完成

compdef '_files -g "*"' svn

此后,zsh将仅提供文件

% svn     
tags in context :completion::complete:svn::
    globbed-files  (_files)

而不是专门且耗时的_svn完成:

% svn 
tags in context :completion::complete:svn::
    argument-1 options  (_arguments _svn _subversion)
tags in context :completion::complete:svn:argument-1:
    commands  (_svn _subversion)

相关内容