Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Question on filename completion



I noticed that zsh gets very slow/unresponsive when I try to
complete a file name which resides in the following file system
hierarchy:

/some/path/to/something/<folders>/xyz/<file to be completed>

The number of folders in <folders> is very high (of the order of
10 thousand). Let us assume they are numbered from 0 to 9999

When I hit tab at
zsh> ls /some/path/to/something/761/xyz/_  # Tab is hit when cursor is at _

zsh spends a lot of time in stat64()ing all the directories from
/some/path/to/something/0 to /some/path/to/something/9999

I do not understand why this is required to complete the filename
after /some/path/to/something/761/xyz

I have turned approximate matching off.

My current zstyle is:

completer
        :completion:* _expand _complete _ignored
matcher-list
        :completion:* 'm:{a-zA-Z}={A-Za-z}'
format
        :completion:*:messages '%B%U---- %d%u%b'
        :completion:*:warnings '%BSorry. No match for: %d%b'
        :completion:*:corrections '%B%d (errors: %e)%b'
menu
        :completion:*:*:kill:* yes select
force-list
        :completion:*:kill:* always
list-colors
        :completion:* 'no=00' 'fi=00' 'di=01;36' 'ln=01;36' 'pi=40;33' 'so=01;35' 'do=01;35' 'bd=40;33;01' 'cd=40;33;01' 'or=40;31;01' 'ex=01;32' '*.tar=01;31' '*.tgz=01;31' '*.svgz=01;31' '*.arj=01;31' '*.taz=01;31' '*.lzh=01;31' '*.lzma=01;31' '*.zip=01;31' '*.z=01;31' '*.Z=01;31' '*.dz=01;31' '*.gz=01;31' '*.bz2=01;31' '*.bz=01;31' '*.tbz2=01;31' '*.tz=01;31' '*.deb=01;31' '*.rpm=01;31' '*.jar=01;31' '*.rar=01;31' '*.ace=01;31' '*.zoo=01;31' '*.cpio=01;31' '*.7z=01;31' '*.rz=01;31' '*.jpg=01;35' '*.jpeg=01;35' '*.gif=01;35' '*.bmp=01;35' '*.pbm=01;35' '*.pgm=01;35' '*.ppm=01;35' '*.tga=01;35' '*.xbm=01;35' '*.xpm=01;35' '*.tif=01;35' '*.tiff=01;35' '*.png=01;35' '*.svg=01;35' '*.mng=01;35' '*.pcx=01;35' '*.mov=01;35' '*.mpg=01;35' '*.mpeg=01;35' '*.m2v=01;35' '*.mkv=01;35' '*.ogm=01;35' '*.mp4=01;35' '*.m4v=01;35' '*.mp4v=01;35' '*.vob=01;35' '*.qt=01;35' '*.nuv=01;35' '*.wmv=01;35' '*.asf=01;35' '*.rm=01;35' '*.rmvb=01;35' '*.flc=01;35' '*.avi=01;35' '*.fli=01;35' '*.gl=01;35' '*.dl=01;35' '*.xcf=01;35' '*.xwd=01;35' '*.yuv=01;35' '*.aac=00;36' '*.au=00;36' '*.flac=00;36' '*.mid=00;36' '*.midi=00;36' '*.mka=00;36' '*.mp3=00;36' '*.mpc=00;36' '*.ogg=00;36' '*.ra=00;36' '*.wav=00;36'


My zsh version: 4.0.7

I found that zsh is is stat64()ing with the help of strace.


Thanks for your time.

- Gowtham


Messages sorted by: Reverse Date, Date, Thread, Author