μ€λ λ΄ ν°λ―Έλμ νλ‘νμΌλ§νκ³ fasd
μ΄ z
λ³΄λ€ μλΉν λ립λλ€.
zλ .
brew --prefix /etc/profile.d/z.sh
λ‘ λ΄ .zshrcμ μΆκ°λμμ΅λλ€.
μ ν: 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λ₯Ό ν¨μμ μΈλΌμΈνλ κ²λ μ΄λ ββμ λ λμμ΄ λμ§λ§ μ¬μ ν λ§€μ° λ립λλ€.
.bash_profileμμ eval "$(fasd --init auto)"
λ₯Ό μ¬μ©νλ©΄ μλκ° λ무 λλ €μ§λλ€.
@sindresorhus νλ‘νμΌλ§μ ν₯λ―Έλ‘κ² λ€λ¦½λλ€. λΉμ μ΄ κ·Έκ²μνλ λ°©λ²μ 곡μ λ§μ?
@wamatt λ¬Έμ ν μ€νΈμ μμ΅λλ€.
λλ λν fasdκ° λ΄ μ
Έμ ν¬κ² λ¦μΆλ κ²μ κ΄μ°°νκ³ μμ΅λλ€.
λ΄ .zshrc
eval "$(fasd --init auto)"
κ° μμ΅λλ€.
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λ μλ μ¬μ ν λλ¦¬λ€ :)
μλ μ νκ° fasdλ₯Ό μ€μΉν ν κ°μ₯ λ¨Όμ μμμ°¨λ¦° κ²μ΄μκΈ° λλ¬Έμ μ λ μ½κ°μ νλ‘νμΌλ§μ νμ΅λλ€.
κΈ°λ³Έ ~/.zshrc
$ time (for i in {1..20}; do zsh -ic 'exit'; done)
================
CPU 87%
user 1.913
system 0.880
total 3.207
z: 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
μ ν: 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λ < 1msλ₯Ό μΆκ°νκ³ fasdλ 39.3msλ₯Ό μΆκ°ν©λλ€.
μ΄κ²μ΄ μ¬μ ν κ΄λ ¨μ±μ΄ μλμ§λ λͺ¨λ₯΄κ² μ§λ§ μ΄ μ½λ μ‘°κ°μ μ¬μ©νλ©΄ λ¬Έμ κ° ν΄κ²°λ©λλ€.
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
κ°μ₯ μ μ©ν λκΈ
μ΄κ²μ΄ μ¬μ ν κ΄λ ¨μ±μ΄ μλμ§λ λͺ¨λ₯΄κ² μ§λ§ μ΄ μ½λ μ‘°κ°μ μ¬μ©νλ©΄ λ¬Έμ κ° ν΄κ²°λ©λλ€.