рдЖрдЬ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рдХреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ fasd
z
рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдзреАрдорд╛ рд╣реИред
z рдХреЛ рдореЗрд░реЗ .zshrc рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: .
brew --prefix /etc/profile.d/z.sh
рд╕рд╛рде fasd: eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)"
рдЙрдирдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо zprof
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкрд░рд┐рдгрд╛рдо рдереЗ:
num calls time self name
-----------------------------------------------------------------------------------
1) 3 1527.75 509.25 83.55% 1527.75 509.25 83.55% _fasd_preexec
2) 2 107.40 53.70 5.87% 107.40 53.70 5.87% compaudit
3) 3 47.98 15.99 2.62% 47.98 15.99 2.62% precmd
4) 1 153.86 153.86 8.41% 46.46 46.46 2.54% compinit
5) 6 39.73 6.62 2.17% 39.73 6.62 2.17% _setup
6) 3 27.72 9.24 1.52% 27.72 9.24 1.52% preexec
num calls time self name
-----------------------------------------------------------------------------------
1) 2 44.18 22.09 48.69% 44.18 22.09 48.69% compaudit
2) 1 67.12 67.12 73.98% 22.95 22.95 25.29% compinit
3) 1 15.62 15.62 17.22% 15.62 15.62 17.22% precmd
4) 1 7.73 7.73 8.52% 7.73 7.73 8.52% preexec
5) 1 0.14 0.14 0.15% 0.14 0.14 0.15% _z
6) 1 0.26 0.26 0.29% 0.12 0.12 0.13% _z_precmd
рдпрд╣ рд╕рд╛рдзрд╛рд░рдг рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ: eval "$(fasd --init posix-alias zsh-hook)"
рд▓реЗрдХрд┐рди рдЕрднреА рднреА z
рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рд╣реИред
num calls time self name
-----------------------------------------------------------------------------------
1) 3 316.83 105.61 47.56% 316.83 105.61 47.56% _fasd_preexec
2) 2 146.31 73.15 21.96% 146.31 73.15 21.96% compaudit
3) 1 228.45 228.45 34.29% 82.14 82.14 12.33% compinit
4) 3 36.87 12.29 5.53% 36.87 12.29 5.53% precmd
5) 3 35.78 11.93 5.37% 35.78 11.93 5.37% _setup
6) 3 24.23 8.08 3.64% 24.23 8.08 3.64% preexec
рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ fasd рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдлреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдордВрджреА рд╣реИред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ fasd
рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ preexec
ред рдЗрд╕ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ fasd
zsh рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( source =fasd
zsh рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рд╕рд╛рде рд╣реА, рддреБрд▓рдирд╛ рдХреЛ рдЕрдзрд┐рдХ рдирд┐рд╖реНрдкрдХреНрд╖ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк fasd рдФрд░ z рдХреЛ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ fasd рдХреЗрд╡рд▓ z рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЙрд▓ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЦреЗрд▓реВрдБрдЧрд╛ред
рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдореБрдЭреЗ fasd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ --sanitize sed regex рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд░рдирд╛ рднреА рдХреБрдЫ рд╣рдж рддрдХ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред
рдореИрдВ рдордВрджреА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: eval "$(fasd --init auto)"
.bash_profile рдореЗрдВред
@sindresorhus рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреА рд╣реИред рдорди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдХрд┐ рдЖрдк рдпрд╣ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?
@wamatt рдпрд╣ рдЗрд╢реНрдпреВ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рд╣реИред
рдореИрдВ рдпрд╣ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ fasd рдореЗрд░реЗ рдЦреЛрд▓ рдХреЛ рдХрд╛рдлреА рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ eval "$(fasd --init auto)"
рдореЗрд░реЗ .zshrc
ред
OSX рдкрд░ zsh 5.0.8 (x86_64-apple-darwin14.3.0)
ред
$ zprof
num calls time self name
-----------------------------------------------------------------------------------
1) 6 194,36 32,39 92,69% 194,36 32,39 92,69% _fasd_preexec
2) 6 5,96 0,99 2,84% 5,96 0,99 2,84% _powerline_get_main_keymap_name
3) 6 5,29 0,88 2,52% 5,29 0,88 2,52% _powerline_set_true_keymap_name
4) 24 2,40 0,10 1,15% 2,40 0,10 1,15% url-quote-magic
5) 6 11,82 1,97 5,64% 0,57 0,09 0,27% _powerline_set_main_keymap_name
6) 6 0,30 0,05 0,14% 0,30 0,05 0,14% zle-line-finish
7) 6 0,27 0,05 0,13% 0,27 0,05 0,13% zle-line-init
8) 6 0,19 0,03 0,09% 0,19 0,03 0,09% omz_termsupport_precmd
9) 6 0,18 0,03 0,09% 0,18 0,03 0,09% omz_termsupport_preexec
10) 6 0,09 0,02 0,04% 0,09 0,02 0,04% _powerline_set_jobnum
11) 6 0,06 0,01 0,03% 0,06 0,01 0,03% omz_termsupport_cwd
-----------------------------------------------------------------------------------
1) 6 194,36 32,39 92,69% 194,36 32,39 92,69% _fasd_preexec
2017 рдореЗрдВ рдЕрднреА рднреА рдзреАрдорд╛ :)
рдлрд╛рд╕рдбреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдордВрджреА рджреЗрдЦреА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рднреА рдХреАред
рдореЗрд░реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ ~/.zshrc
$ time (for i in {1..20}; do zsh -ic 'exit'; done)
================
CPU 87%
user 1.913
system 0.880
total 3.207
рдЬреЗрдб рдХреЗ рд╕рд╛рде: source /usr/share/z/z.sh
$ time (for i in {1..20}; do zsh -ic 'exit'; done)
================
CPU 87%
user 1.837
system 0.970
total 3.213
Fasd рдХреЗ рд╕рд╛рде: eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)"
$ time (for i in {1..20}; do zsh -ic 'exit'; done)
================
CPU 83%
user 2.207
system 1.123
total 3.993
рддреЛ z <1 ms рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ fasd 39.3 ms рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
eval "$(fasd --init posix-alias)" # Anything you want enabled BUT zsh-hook
_fasd_preexec() {
{ eval "fasd --proc \$(fasd --sanitize \$2)"; } &|
}
autoload -Uz add-zsh-hook
add-zsh-hook preexec _fasd_preexec
рдпрд╣рд╛рдБ рд╕реЗ
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐fasd
рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИpreexec
ред рдЗрд╕ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐fasd
zsh рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (source =fasd
zsh рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдХреНрдпрд╛ рд╡рд╣ =
рд╕реНрд░реЛрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕рд╛рд░реНрдердХ рд╣реИ?
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
eval "$(fasd --init posix-alias)" # Anything you want enabled BUT zsh-hook _fasd_preexec() { { eval "fasd --proc \$(fasd --sanitize \$2)"; } &| } autoload -Uz add-zsh-hook add-zsh-hook preexec _fasd_preexec
рдЕрдЧрд░ рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП zsh --init zsh-hook
рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдХреЛрдИ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдирд┐рдк рдХреЛ рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рд╕реНрд░реЛрдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ eval
рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред
# add zsh hook
_fasd_preexec() {
{ eval "fasd --proc $(fasd --sanitize $1)"; } >> "/dev/null" 2>&1
}
autoload -Uz add-zsh-hook
add-zsh-hook preexec _fasd_preexec
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ: