5

So I wanted to get away from oh-my-zsh because it made my shell startup lag noticeably (>0.1s). Indeed, after removing oh-my-zsh the startup time went to 0.02s but now I started adding features manually back in. First and foremost, the case insensitive tab completion. For this reason I added something like

autoload -U compinit compinit zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}'

to my .zshrc. However, this one small feature alone increased my startuptime almost threefold, whereas other feature like syntax highlighting or autosuggestions don't seem to impact the startup time at all.

In bash I can get the desired case insensitive completion simply via bind 'set completion-ignore-case on' without any performance decrease (startup time ~ 0.01s).

I have no idea what compinit does, but is there no way to get case insensitive completion in zsh without slowing down startup significantly?

1
  • I have the same problem but at the end at decided to ignore zsh's completion feature, all I want from it is partial-word and case-insensitive but it cost too much, I use fzf ctrl-t instead, cost me more 1 keystroke when fuzzy files but I'm okay with more 1-2 keystrokes. Commented Jun 12, 2020 at 3:48

2 Answers 2

1

Just use Powerlevel10k's instant prompt feature and you'll be able to add whatever you like to your .zshrc without slowing down your startup time.

0

You could add the "compinit" references on the .zlogin instead of .zshrc, in my case the loading time improved a lot. I also have a test to recompile the compinit only once a day.

autoload -Uz zrecompile autoload -Uz compinit dump=$ZSH_COMPDUMP # http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html if [[ -s $dump(#qN.mh+24) && (! -s "$dump.zwc" || "$dump" -nt "$dump.zwc") ]]; then compinit -i d $ZSH_COMPDUMP zrecompile $ZSH_COMPDUMP fi compinit -C 

On my .zshenv I have this to avoid loading global configuration:

unsetopt GLOBAL_RCS skip_global_compinit=1 setopt noglobalrcs 
3
  • I added the two code chunks to their respective files and removed the compinit reference from my .zshrc, but now all the features are gone (even after reboot). Commented May 16, 2019 at 15:10
  • I readded only the "autoload -Uz compinit" on my .zshrc with some time gain. Commented May 16, 2019 at 18:31
  • even if I put autoload -Uz compinit but not compinit in my .zshrc, none of the expected features work.. Commented May 17, 2019 at 14:11

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.