bashããzshã«åãæ¿ããã«ã¯ããããã®åºæ¬çãªéããç¥ãå¿
èŠããããŸããããããªããšã ~/.zshrc
ã§zshã®åæã»ããã¢ãããè¡ãã®ãé£ãããªããŸãã
ç§ã¯èªåèªèº«ã調ã¹ããšãã«ãããã®éãã®ç°¡åãªèª¬æãèŠã€ããããšãã§ãããzshã®ããã¥ã¡ã³ããèªãã®ã«å€ãã®æéãè²»ããå¿
èŠããããŸããã ãã®èšäºã«ãããzshãžã®åãæ¿ãã容æã«ãªãããšãé¡ã£ãŠããŸãã
ãªãè¡ã
ãããã-ç§»è¡ã«æéãšæ³šæãæã䟡å€ã¯ãããŸããïŒ POSIX shãŸãã¯bashã»ã©äžè¬çã§ã¯ãªãå¥ã®æ¹èšshãåŠã³ãäœæ¥ç°å¢ãåæ§æããŸã...
ç§ã®æèŠã§ã¯ãã³ã³ãœãŒã«ã§å€ãã®æéãéãããªããVimãEmacsã奜ãã§ããã§ã«ãèªåçšã«ãã»ããã¢ããããã®ã«å€ãã®æéãè²»ãããŠããããšã«ééããããŸããã Zshã¯ç²Ÿç¥çã«éåžžã«äŒŒãŠããŸãïŒéåžžã«è€éã§æè»ãªããã°ã©ã ã§ããããã®èœåã¯ã»ãšãã©ç¥ãããŠããªã人ã§ãããèšå®ã«æéãããããšã éåžžã«äŸ¿å©ãªäœæ¥ç°å¢ãå人çã«åŸãããšãã§ããŸã ã
æ°ããæ¹èšshã®ç ç©¶ã«é¢ããŠã¯ããã®å©ç¹ã¯ã»ãšãã©ãããŸãããããã®èšäºã§èª¬æãããŠããæå°å€ã¯zshãæ§æããã®ã«ååã§ãããzshæ¹èšã§æ°ããã¹ã¯ãªãããäœæããããšãæäŸãã人ã¯ããŸããã äžè¬ã«ãããã¯ãVim / Emacsãæ§æããããã«ãVimLãŸãã¯Emacs Lispãæäœéç¥ã£ãŠããå¿
èŠãããããšãšéãã¯ãããŸããã
ã€ã³ã¿ãŒãããã«ã¯ãzshã®ç¹å®ã®æ©èœã説æããèšäºããã¬ãŒã³ããŒã·ã§ã³ããããããããŸããããã«ããã誰ãã®ç掻ã倧å¹
ã«ç°¡çŽ åãããŸããã 誰ããç°ãªãæ©èœãå¿
èŠãšãããããç§ã¯ãããããªã¹ãããŸãããzshã«ã¯ãããã奜ã¿ã®ãªãã·ã§ã³ããããŸãã 代ããã«ããããã®æ©èœãå®è£
ã§ããzshã®äž»èŠãªæ©èœã«ã€ããŠèª¬æããŸãã
- Zshã¯ãŠãŒã¶ãŒã³ãã³ãã®å
¥åã«readlineã䜿çšããŸããã 代ããã«ããã€ãã£ãZLEãšãã£ã¿ãŒïŒZsh Line EditorïŒã䜿çšãããŸãã ããã«ãããè€æ°è¡ã®ã³ãã³ãã®äŸ¿å©ãªç·šéãã³ãã³ãå
¥åäžã®æ§æã®åŒ·èª¿è¡šç€ºã誀ã£ãŠæ¿å
¥ãããããã¹ããå®è¡ããªãããã¯ãªããããŒãããã®ç¹å¥ãªã貌ãä»ããåŠçããããããŒã®æè»ãªå¶åŸ¡ãå
ã«æ»ãïŒèªåè£å®ãšæ¡åŒµã®çµæã®ãã£ã³ã»ã«ãå«ãïŒã°ããŒãïŒ...ããã«ããšãã£ã¿ãŒã®æ©èœãzshãšçµ±åããŸããããã«ãããéåžžã®zsh颿°ã䜿çšããŠãã®åäœãå¶åŸ¡ã§ããŸãïŒããšãã°ãæ§æã®åŒ·èª¿è¡šç€ºãå®è£
ãããŸãïŒã
- ã³ãã³ããå®äºããããã®éåžžã«è€éã§æè»ãªã¡ã«ããºã ã ã³ã³ããã¹ãã«åŒ·ãäŸåãããããã³ãã³ãã©ã€ã³ã®ããŸããŸãªå Žæã§
<Tab>
ãæŒããšãã³ãã³ãåããã©ã¡ãŒã¿ãŒããã¡ã€ã«ããŠãŒã¶ãŒåãšãµãŒããŒåãããã»ã¹çªå·ã倿°åãé
åã€ã³ããã¯ã¹ãšããã·ã¥ããŒãzshæ§æèŠçŽ ãªã©ãããŸããŸãªãã®ã远å ãããŸããè²ãšãã©ã³ãã®ååããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ãã·ã¹ãã ããã±ãŒãž...èŠããã«ãèªåè£å®ã§ãããã¹ãŠã®ãã®ã§ãã ãŸããç¹å®ã®ããŒã ã®ç¹å®ã®ã³ã³ããã¹ãã®ãªãŒãã³ã³ããªãŒãããžãã¯ã倿ŽãããŸã§ã詳现ã«å¶åŸ¡ã§ããŸãã - zshã®åäœã倿Žããèšå€§ãªæ°ã®ãªãã·ã§ã³ïŒzsh-5.2ã§ã¯177ïŒã ããšãã°ããµããŒããããŠããæ§æã倿Žããsh / bash / ksh / cshãšã®äºæã¢ãŒããïŒéšåçã«å«ãïŒæå¹ã«ããããšãã§ããŸãã zshã§ã¯ãå€ãã®é¢æ°ãéåžžæåã®ã³ãã³ãã«å«ãŸããå¥åã®ãzshäºæã¢ãŒãããäœæããå¿
èŠããã£ãããããã®é¢æ°ã®ã³ãŒããzshã«ãã£ãŠäºæ³ã©ããã«æ£ç¢ºã«çè§£ãããããšãä¿èšŒããããããäœæ¥ã«å€§ãã圱é¿ããããšãã§ããŸãèè
ã
- 奜ã¿ã¯ãæãç°¡æœã§ç°¡æœãªæ§æã§ã-ãããã£ãŠãå
žåçãªãããªãè€éãªã¿ã¹ã¯ãå®è¡ããããã«ãã§ããã ãå°ãªãããã¹ããå
¥åããå¿
èŠããããŸãã æã®èªã¿ããããéèŠãªã³ãŒãã§ã¯ãããã¯ééããªããã€ãã¹ã§ãã ããããã³ãã³ãã©ã€ã³ã§-ééããªããã©ã¹ã
- ãã¬ãŒã ã¯ãŒã¯ïŒoh-my-zshãpreztoãªã©ïŒããã©ã°ã€ã³ãããŒããªã©ã«ããèšå®ã®ã¢ãžã¥ãŒã«æ§æ å®éãzshã«åºæã®ãã®ã¯äœããããŸãããbashã§ããŸã£ããåãããšãã§ããŸããã...äœããã®çç±ã§ãããã¯ãã¹ãŠzshã«ã¯ãã§ã«ååšããŸãããbashã«ã¯ååšããŸããïŒååšããå Žåããããç¥ã£ãŠãã人ã¯ã»ãšãã©ããŸããïŒ ã ãŸããããã«ãããVimãã©ã°ã€ã³ãéã¿ä»ããããããã«ãæ¢è£œã®ããã¥ãŒããããzshèšå®ã®ããŒãžã§ã³ãæ¯èŒçè¿
éã«çµã¿ç«ãŠãããšãã§ããŸãïŒäŸãšããŠã zsh Antigenãã©ã°ã€ã³ãããŒãžã£ãŒã®ãããªãåç
§ïŒã
éããšäºææ§
ç¹°ãè¿ãã«ãªããŸãããzshæ©èœã®å®å
šãªã»ããã§ã¯ãªããbashãšã®éããæ£ç¢ºã«èª¬æããããšãæç¢ºã«ããŸãã ããªãã粟éããŠããã»ãšãã©ã®æ©èœã¯ãbashãšåãããã«zshã§åäœããŸãã ããããã»ãŒåãããšãè¡ãzshåºæã®æ¹æ³ããã°ãã°ãããŸãã ããã¯ãzshãä»ã®ã·ã§ã«ãšã®äºææ§ã«å€ãã®æ³šæãæã£ãŠãããšããäºå®ã«ãããã®ã§ãããã®ãããä»ã®å€ãã®ã·ã§ã«ãzshãšãã®æ©èœã«ãã©ãã°ãããŸããããã®çµæãåãããšãè¡ãããã€ãã®ä»£æ¿æ¹æ³ããããŸããã
èŠçŽ
- ãã©ã¡ãŒã¿ïŒéåžžã®å€æ°-ã¹ã«ã©ãŒïŒæååãæŽæ°ãåæ°ïŒãé
åã飿³é
åïŒããã·ã¥ïŒã ãŸãã倿°ã¯äž»ã«ç°å¢å€æ°ãšåŒã°ããŸãã ãšã¯ã¹ããŒããããã¹ã«ã©ãŒãã©ã¡ãŒã¿ãŒã
- åŒæ°ïŒåŒã³åºãããã³ãã³ããŸãã¯é¢æ°ã®ãã©ã¡ãŒã¿ãŒïŒåŸæ¥ã®æå³ïŒïŒé¢æ°ã®åŒæ°ã¯ããã©ã¡ãŒã¿ãŒ
$@
ã $1
ã...ãä»ããŠäœ¿çšã§ããŸãïŒã - ãã³ãã¬ãŒãïŒ globã éåžžããã³ãã¬ãŒãã¯å®éã®ãã¡ã€ã«ãšã®äžèŽãæå³ããŸãããå Žåã«ãã£ãŠã¯æååãŸãã¯ãã©ã¡ãŒã¿ãŒå€ã«é©çšãããŸãã æ¬æ Œçãªã¬ã®ã¥ã©ãŒã®ãµããŒãããããŸãããã»ãšãã©ã®å Žåãã°ããŒãã¯ãããã³ã°ãŸãã¯æ€çŽ¢/眮æã®ãã³ãã¬ãŒããšããŠã©ãã§ã䜿çšãããŸãã
- ãã©ã°ïŒåœ±é¿ãããã®ã®åã«æ¬åŒ§ã§èšå®ããŸãã ãã©ã¡ãŒã¿ãŒã®å Žåãéå§äžæ¬åŒ§ãšãã©ã¡ãŒã¿ãŒåã®éã«èšå®ãããŸãïŒ
${(kv@)some_hash}
ã ãã³ãã¬ãŒãã®å Žåãå
é ãŸãã¯äžå€®ã«é
眮ã§ããŸãïŒ *CaseImportant(#i)CaseIgnored*.txt
ã - 修食åïŒãã³ãã¬ãŒãã®åŸã«æ¬åŒ§ã§èšå®ãããã¡ã€ã«åã«é¢é£ä»ããããŠããªãããããã£ã§æå®ããŸãïŒ
*(/^F)
ã - 修食åïŒããããã³ãã³ã®åŸã«æå®ãããçŸåšã®å€ãé çªã«å€æŽããŠé©çšãããŸãã ãã©ã¡ãŒã¿ãŒã®å Žåããã©ã¡ãŒã¿ãŒåã®åŸã«æå®ãããŸãïŒ
$PWD:h:t
ã ${some_param:h:t}
ã ãã³ãã¬ãŒãã®å Žåã修食åã®éãæ¬åŒ§ã®åã«æå®ãããŸãïŒ *(:e)
ã
çŸåšã®èšå®
å€ãã®çµã¿èŸŒã¿ã³ãã³ãã¯ãèµ·åæã«çŸåšã®ç¶æ
ãåŒæ°ãªãã§è¡šç€ºããŸãïŒããã«å€ãã®å Žåãzshã³ãã³ãã®ã¹ã¿ã€ã«ã§åºåãæç»ããåŒæ°ããããéåžžã«äŸ¿å©ã§ãïŒã
ããã¯å®å
šãªãªã¹ãã§ã¯ãããŸããããzshæ§æã®ããã»ã¹ïŒåæïŒã®ã»ãšãã©ã®ã¿ã¹ã¯ã«ã€ããŠã¯ååãªã¯ãã§ãã
zsh -f
ã圹ç«ã€å ŽåããããŸããããã«ãããzshãããã©ã«ãç¶æ
ã§èµ·åããŸãïŒã»ãšãã©ã®ã·ã¹ãã ã§ã¯äœ¿çšã§ããªã/etc/zshenv
以å€ã®èµ·åã¹ã¯ãªããã¯å®è¡ãããŸããïŒã
setoptããã³ãšãã¥ã¬ãŒã
- ãªãã·ã§ã³ã®ååã§ã¯ã倧æåãšå°æåã¯é¢ä¿ãªãããªãã·ã§ã³ã®åã«æ¥é èŸãnoãã远å ã§ããŸãã
- åã
setopt
ãªãã·ã§ã³ããã¬ãã£ãã¯ã¹ãnoãã§unsetopt
ã unsetopt
ããnoããªãã§setopt
ãŸãïŒéãåæ§ã§ãïŒïŒåãããšãè¡ããŸãã setopt
ã®åºåã§ã¯ãã¢ã³ããŒã¹ã³ã¢ãªãã®å°æåã䜿çšãããããã¥ã¡ã³ãã§ã¯ã¢ã³ããŒã¹ã³ã¢ä»ãã®å€§æåã䜿çšãããŸãã ããã¯ããã€ãã®äžäŸ¿ããããããŸã-ããã¥ã¡ã³ããæ€çŽ¢ãããšããç®çã®ãªãã·ã§ã³ãèŠã€ããããã«ã¢ã³ããŒã¹ã³ã¢ãæ¿å
¥ããå Žæãæšæž¬ããå¿
èŠããããŸããemulate
ã³ãã³ãã䜿çšãããšãshãkshãcshãšã®äºææ§ç¶æ
ãŸãã¯zshã®ããã©ã«ãç¶æ
ã§ãªãã·ã§ã³ã®ã°ã«ãŒãã倧éã«èšå®ã§ããŸãã zshã®å€ãã®æ©èœã¯emulate emulate -L zsh
ã³ãã³ãã§å§ãŸããŸããããã«ãããæ©èœã®ç¶ç¶äžã«ããŒãªãã·ã§ã³ãzshã®ããã©ã«ãç¶æ
ã«ããããšãã§ããŸã-ããããªããšãã»ãšãã©ã®éèªæãªæ©èœã¯ãŠãŒã¶ãŒãèšå®ãããªãã·ã§ã³ã®ããã«å£ããå¯èœæ§ããããŸãïŒããšãã°ãé
åã«ã¯ã€ã³ããã¯ã¹ãä»ããããŸã-1ãŸãã¯0ããïŒã
zshã®äœ¿çšéå§æãbashåŸã®ãã身è¿ãªäœæ¥ã®ããã«ã以äžã®ãªãã·ã§ã³ããå§ãããŸãã
SH_WORD_SPLIT
ãªãã·ã§ã³ããããbashåŸã®éåžžã®äœæ¥ã§ã¯æ£åŒã«æå¹ã«ããå¿
èŠããããŸããããããæå¹ã«ããå¿
èŠããããŸããããã®ãªãã·ã§ã³ã䜿çšããªãzshã®åäœã¯ãã䟿å©ã§è«ççã§ãããããããã«æ
£ããããšããå§ãããŸãã cmd $PARAM
ã®å€ãã¹ããŒã¹ãå«ãæååã§ããå Žåã®cmd $PARAM
åäœã¯ãbash cmd
ããã€ãã®åŒæ°ãåãåããzshã§1ã€ïŒ cmd "$PARAM"
ãåŒã³åºããããã®ããã«ïŒãåŠçããŸãã ãŸãã $PARAM
ãé
åã®å Žåãzshã¯cmd
é
åã®ç©ºã§ãªãèŠçŽ ããšã«1ã€ã®åŒæ°ãäžããŸãïŒãããã®èŠçŽ ã«ã¹ããŒã¹ãå«ãŸããŠããå Žåã§ãïŒã
ïŒåºæ¬çã«ããã®èšäºã§ã¯ããã©ã«ãã®ãªãã·ã§ã³ã䜿çšããzshã®åäœã«ã€ããŠèª¬æããŸããããããªããšã2çªç®ã®æããšã«ããã ãããã®ãããªãªãã·ã§ã³ã§ã¯ãã¹ãŠåäœãç°ãªãããšããã¹ã¿ã€ã«ã«æ¹è¯ããå¿
èŠããããŸããïŒ
ãã©ã¡ãŒã¿
- èŠåïŒã¹ã«ã©ãŒãã©ã¡ãŒã¿ãŒåïŒæååãæŽæ°ãå°æ°ïŒã«ã¯éåžž
$
æåã䜿çšããé
åïŒéåžžããã³é£æ³ïŒ- $
ãŸãã typeset -U
ãããšãäžæã®èŠçŽ ãæã€é
åã宣èšã§ãtypeset -U
ïŒæ¢åã®èŠçŽ ã远å ããããšããŠãç¡èŠãããŸãïŒãtypeset -T
ãããšãé
åã$PATH
圢åŒã®ã¹ã«ã©ãŒã«é¢é£ä»ããããšãã§ãtypeset -T
ã ãããã®é¢é£ãã©ã¡ãŒã¿ãŒã®ããã€ãã¯ãã§ã«äœæãããŠããŸãïŒ $PATH
ãš$path
ã $FPATH
ãš$fpath
ã $MANPATH
ãš$manpath
ã $CDPATH
ãš$cdpath
ã é¢é£ãããã©ã¡ãŒã¿ã«ã€ããŠã¯ãã©ã¡ãã倿Žãããã¯åé¡ã§ã¯ãããŸãããäž¡æ¹ãåæã«å€æŽãããŸãã ãããã£ãŠããã®ãããªãã©ã¡ãŒã¿ãŒã䜿çšããzshã§ã¯ãã»ãšãã©ã®å Žåé
åïŒ $path
ã $fpath
ã...ïŒãä»ããŠæ©èœããŸã-ããã¯ã¯ããã«äŸ¿å©ã§ãã$PS1
ã $PROMPT
ãããã³$prompt
ãªã©ã®äžéšã®ã¹ã«ã©ãŒãã©ã¡ãŒã¿ãŒãçžäºæ¥ç¶ãããŠã$prompt
ïŒãã ãããããã¯1ã€ã®ãã©ã¡ãŒã¿ãŒã®åãªãå矩èªã§ãïŒã
é
å
- 1ããã€ã³ããã¯ã¹ä»ã
- ïŒé
åã®æåŸããïŒè² ã®ã€ã³ããã¯ã¹ã䜿çšã§ããŸãã
- ã¹ã©ã€ã¹ã䜿çšã§ããŸãã
- ã¹ã«ã©ãŒãšããŠäœ¿çšããå Žå-ã¹ããŒã¹ãä»ããŠèŠçŽ ãçµåããŸãã
- ã¹ã«ã©ãŒã®ã€ã³ããã¯ã¹ä»ãã¯ãæååæåãè¿ããŸãã
- globã¯é
åãè¿ããããã€ã³ããã¯ã¹ã¯globã®ä¿®é£ŸåãšããŠäœ¿çšã§ããŸãïŒ
*([2,-2])
ã
ãã¿ãŒã³
**/
-ãµããã£ã¬ã¯ããªããªãå Žåãå«ãããã¹ãã¬ãã«ã®ãµããã£ã¬ã¯ããªã«äžèŽããŸã<1-2>
-ãã¡ã€ã«åã®æå®ãããç¯å²ã®çªå·ãšäžèŽããŸããç¯å²ã®éå§ãšçµäºã¯çç¥ã§ããŸã(1|2)
-代æ¿ïŒ EXTENDED_GLOB
ãªãã·ã§ã³ã䜿çšããå Žåã¯æ¬åŒ§ãã°ã«ãŒãåïŒEXTENDED_GLOB
ãªãã·ã§ã³ãæå¹ã«ãããšããã³ãã¬ãŒãã§#
ïŒåã®èŠçŽ ãç¹°ãè¿ãïŒã ~
ããã³^
ïŒäžèŽããã®äŸå€ïŒã远å ã§äœ¿çšã§ããŸã
ãã©ã°/修食å/修食å
ãã³ãã¬ãŒãã®ã¿ã«ä¿®é£Ÿåãããããã¡ã€ã«ãéžæããããã®è¿œå æ¡ä»¶ãæå®ã§ããŸãïŒã¿ã€ãïŒãã¡ã€ã«/ãã£ã¬ã¯ããª/ã·ã³ããªãã¯ãªã³ã¯/ãªã©ïŒãæš©å©ãæéïŒå€æŽ/ãªã©ïŒããµã€ãº...éžæãããã¡ã€ã«ããœãŒãããã³ã€ã³ããã¯ã¹ã§ããŸãã ããªãªãã§å§ãŸãååãæã€æåã®*
äžèŽãããã®ç¹å®ã®ãã¿ãŒã³ã«å«ããããšãã§ããŸãã ã©ã®ãã³ãã¬ãŒããšãäžèŽããªãå Žåãã³ãã³ãã©ã€ã³åŒæ°ãããã®ãã³ãã¬ãŒããåé€ã§ããŸãã
EXTENDED_GLOB
ãªãã·ã§ã³ãæå¹ã«ãããšããã³ãã¬ãŒãã§ãã©ã°ã䜿çšã§ããŸãããã¡ã€ã«ã®å Žåã倧æåãšå°æåã®åºå¥ã®å¶åŸ¡ãéèŠã§ããããã©ã¡ãŒã¿/è¡ã«äžèŽããå Žåãä»ã®æçšãªãã©ã°ããããŸãã
ãã©ã¡ãŒã¿ãŒã«ã¯ãããã«å€ãã®ãã©ã°ã䜿çšã§ããŸãïŒãã¹ãŠã®ïŒç©ºãå«ãïŒé
åèŠçŽ ãåŒçšç¬Šã§è¡šç€ºãããç¹å®ã®ãµãã¹ããªã³ã°ã§çµåãŸãã¯åå²ãå®è¡ããã飿³é
åã®ããŒããã³/ãŸãã¯å€ã®ã¿ã衚瀺ãããããŸããŸãªçš®é¡ã®åŒçšç¬Šã§ãšã¹ã±ãŒããããéã®æäœãªã©
ãã³ãã¬ãŒããšãã©ã¡ãŒã¿ãŒã«ä¿®é£Ÿåã䜿çšã§ããŸãïŒæåŸã®ãã¹èŠçŽ ã®åé€ãæåŸä»¥å€ã®ãã¹ãŠã®ãã¹èŠçŽ ã®åé€ãæ¡åŒµæ©èœã®åé€/æ¡åŒµããšã¹ã±ãŒããšéã®æäœãéšåæååã®æ€çŽ¢ãšçœ®æãªã©ã
autoload -Uz
source /path/to/file.sh
ãŸãã¯ã䜿çšããŠã³ãŒããããŒãããåŸæ¥ã®æ¹æ³ã«å ã㊠zshã³ãŒãã®èªåããŒãã®. /path/to/file.sh
ã¯ãæåã®é¢æ°åŒã³åºãã®æç¹ã§ã¢ã¯ãã£ãã«äœ¿çšãããŸãã
ç®çã®é¢æ°ã§ãã¡ã€ã«ãæ€çŽ¢ããã«ã¯ã $FPATH
ã䜿çšããŸããããã¯ã $PATH
ãšåœ¢åŒã䌌ã倿°ã§ãããŒãããã颿°ã®ååãšåãååã§ãã¡ã€ã«ãæ€çŽ¢ããããã£ã¬ã¯ããªã®ãªã¹ããå«ãŸããŸãã
autoload
åŒã³åºããããšautoload
ãã¡ã€ã«ã¯ãã£ã¹ã¯ããèªã¿åãããããããã®ååšããã§ãã¯ãããŸãããããã¯ãã¹ãŠã颿°ãæåã«åŒã³åºããããšãã«è¡ãããŸãã ã»ãšãã©ã®å Žåã autoload
åŒæ°ãæž¡ãå¿
èŠããããŸã-U
ïŒå€ãã®å ŽåããŠãŒã¶ãŒãèšå®ãããšã€ãªã¢ã¹ã¯ãµãŒãããŒãã£ã®æ©èœã®åäœã劚ããå¯èœæ§ããããããããŠã³ããŒããããã¡ã€ã«ã®çŸåšã®ãšã€ãªã¢ã¹ã®å¹æããã£ã³ã»ã«ããŸãïŒããã³-z
ïŒããŠã³ããŒããããã¡ã€ã«ãzsh圢åŒã§ãããšãããªãã·ã§ã³ã®ä»æ§ã§ããããããããå®å
šã§ãïŒåžžã«å°ããŸãïŒã
fpath=(~/my-zsh-functions $fpath) autoload -Uz fn fn
ããã«ããã¡ã€ã«~/my-zsh-functions/fn
ã®å
容ã¯ã次ã®3ã€ã®åœ¢åŒã®ããããã«ãªããŸãã
zkbd
zshã®æåã®èµ·åæã«ãF1 / Backspace / Delete / cursorãªã©ã®ãã¿ã³ã®äžéšãæ£ããæ©èœããªãããšããããããŸãã ããã¯ãã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ã®å€§éšåãreadlineã䜿çšããŠããããããã®ãã¿ã³ã®æ£ããèšå®ã/etc/inputrc
ããã³~/.inputrc
ããèªã¿åãããŸãããzshã§ã¯èªã¿åãããªãããã§ãã
åé¡ã¯~/.zshrc
ãŸããã©ã®ãšã¹ã±ãŒãã·ãŒã±ã³ã¹ãã¿ãŒããã«ã§å¿
èŠãªãã¿ã³ãçæãããã調ã¹ããããã®ãšã¹ã±ãŒãã·ãŒã±ã³ã¹ã«å¿
èŠãªãã³ãã©ã~/.zshrc
èšå®ããå¿
èŠããããŸãã ãã®ãããªãã®ïŒ
bindkey '^[[A' up-line-or-history
cat >/dev/null
ãå®è¡ããç®çã®ãã¿ã³ã®åã§Ctrl-V
ãæŒããšããã¿ã³ã«ãã£ãŠè¡šç€ºãããã·ãŒã±ã³ã¹ãèŠãããšãã§ããŸãã ïŒãããŠãã¯ãã2017幎ã«ãããè¡ããšãå°ãå¥åŠã«æããŸãã...ïŒãããããã®ããã»ã¹ãèªååããzkbd
ãŠãŒãã£ãªãã£ã«ã¯zshãä»å±ããŠããŸãã ãããè¡ãã«ã¯ã ~/.zshrc
æ¥ç¶ããŸãããã®åŸãå¿
èŠãªãšã¹ã±ãŒãã·ãŒã±ã³ã¹ãå«ã飿³é
å$key
ãäœæãããŸãã
autoload -Uz zkbd [[ ! -f ~/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE} ]] && zkbd source ~/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE} [[ -n $key[Up] ]] && bindkey -- $key[Up] up-line-or-history [[ -n $key[Down] ]] && bindkey -- $key[Down] down-line-or-history
ã©ã®ã³ãã³ãïŒ up-line-or-history
ïŒãã©ã®ãã¿ã³ã«å²ãåœãŠãããè©³çŽ°ã«æå®ããŸããããŸãããã¹ãŠãé£ç¶ããŠå²ãåœãŠãã®ã§ã¯ãªããç®±ããåºããŠæ©èœããªããã®ã ããå²ãåœãŠãå¿
èŠãããããã§ãã HomeãŸãã¯Backspaceãå
šå¡ã®ããã«äœããã¹ããã«ã€ããŠã¯ãUpãšDownã®å±¥æŽã®æ€çŽ¢ã¯ãŸã£ããç°ãªãæ¹æ³ã§è¡ãããšãã§ãããããã®å Žåã®æ©èœããããã®ãã¿ã³ã«å²ãåœãŠãå¿
èŠããããŸãã
ïŒãšããã§ãbindkeyãã©ã¡ãŒã¿ãŒã§ãšã¹ã±ãŒãæåïŒ ^[
ïŒãå®éã®æåã§æå®ãã Ctrl-V
ã§Ctrl-V
ãéåžžã®2æå^[
ãããã³2æå\e
ãŸããïŒ
zstyle
ããã¯ãç¶æ³äŸåã®èšå®ã䜿çšããçµã¿èŸŒã¿ã®æ¹æ³ã§ãã å€ãã®ç¹ã§ãéåžžã®ãã©ã¡ãŒã¿ãŒã«äŒŒãŠããŸããããã©ã¡ãŒã¿ãŒã®ååãšå€ã«å ããŠã zstyle
ãã³ã³ããã¹ãããã³ãã¬ãŒããèšå®ã§ãzstyle
ã ãããŠãçŸåšã®ã³ã³ããã¹ãã«é¢é£ããå€ãååŸããŸãã ãã®ã¢ãããŒãã¯ãèªåè£å®ã®äœæ¥ãæ§æããããã«ç©æ¥µçã«äœ¿çšãããŸãããç¬èªã®ã¹ã¯ãªããã«äœ¿çšããããšãã§ããŸãã
zmodload
远å ã®zshæ©èœã®äžéšã¯ã autoload -Uz
䜿çšããŠããŒããããéåžžã®ã¹ã¯ãªããã§ã¯ãªãã *.so
ã·ã¹ãã ã©ã€ãã©ãªãšããŠå®è£
ãããŸãã ããšãã°ãPCREæ£èŠè¡šçŸãæ°åŠé¢æ°ããœã±ãããªã©ãžã®ã¢ã¯ã»ã¹ãæäŸããããã«äœ¿çšãããŸãã ãã®ãããªã©ã€ãã©ãªã¯ã zmodload
ãä»ããŠããŒããããŸãã
éå€
æšæºtrap 'âŠ;code;âŠ' INT
å ããŠãã·ã°ãã«ãã€ã³ã¿ãŒã»ããããããã«ãç¹å¥ãªååã®é¢æ°ã䜿çšã§ããŸãïŒ TRAPINT() { âŠ;code;⊠}
ã
if
ã while
ãªã©ã®ãããªå€ãã®æ§é çç¥åœ¢ããããŸãïŒäžèšã®äŸã§ã¯ããã¹ãŠã®ãã€ã³ãããŒã¢ãŒãã®å€ã衚瀺ãããŠããŸãïŒã
çªç¶ãzshåºæã®é¡äŒŒã³ãã³ãã§ããecho
ã³ãã³ãïŒ print
ã³ãã³ãïŒã¯ãzshãåŠç¿ããéã«éåžžã«äŸ¿å©ã§ããããšã倿ããŸããã 圌女ã¯å€ãã®ããšãç¥ã£ãŠããŸãããæãæçšãªãã®ããïŒ
ãã zsh, // Awesome- zsh .