Upgrade to Pro — share decks privately, control downloads, hide ads and more …

最強のターミナル・シェルを作る - NIFTY Tech Talk #11

最強のターミナル・シェルを作る - NIFTY Tech Talk #11

Video


Resources

新人エンジニアに贈る最強の開発環境 - NIFTY Tech Talk #11

https://nifty.connpass.com/event/284175/

More Decks by ニフティ株式会社

Other Decks in Programming

Transcript

  1. 

  2. 

  3. ࢖༻͢Δλʔϛφϧ J5FSN w J5FSNΛ࢖͏ w IUUQTJUFSNDPN w ઃఆ߲໨͕ॆ࣮͓ͯ͠ΓɺΧελϚΠζੑ͕ߴ͍ w ݟͨ໨

    ΧϥʔςʔϚɺಁաɺഎܠը૾ ͷΧελϚΠζ w ಛఆͷΩʔΛೖྗͨ͠ͱ͖ʹɺJ5FSNΛݺͼग़͠ w ೔ຊޠೖྗͰ͖Δ w λʔϛφϧ͸ւ֎੡͕ଟ͍ͨΊɺೖྗͰ͖ͳ͍͜ͱ΋͠͹͠͹ w 5SVF$PMPSʹରԠ w ରԠ͍ͯ͠Δ΄͏͕ɺ͞·͟·ͳ৭ΛදݱͰ͖Δ w .BDͷσϑΥϧτͷλʔϛφϧBQQ͸ະରԠ J5FSNͱ͸ʁ ΧϥʔςʔϚͷ ઃఆ ϑΥϯτͷઃఆ ϗοτΩʔͷ ઃఆ 
  4. J5FSNͷઃఆ ϑΥϯτΛઃఆ͢Δ w ϑΥϯτ͸ίʔυϦʔσΟϯάʹ͓͍ͯॏཁ w )BDL(FO/FSEϑΥϯτΛ࠾༻ w ʮനݯʯͱʮ/FSE'POUʯ͕૊Έ߹Θͬͨ͞ϑΥϯτ w നݯ

    w ೔ຊޠͱΞϧϑΝϕοτ͕ಡΈ΍͍͢ w ϓϩάϥϛϯά޲͚ӳจϑΥϯτ)BDL w ೔ຊޠϑΥϯτݯॊΰγοΫ w -΍*ɺશ֯εϖʔεͱ͍ͬͨݟ෼͚͕͖ͭʹ͍͘จࣈΛ൑ผ͠΍͍͢ w /FSE'POU w ΞΠίϯΛදࣔ͢ΔͨΊͷϑΥϯτ J5FSNͱ͸ʁ ΧϥʔςʔϚͷ ઃఆ ϑΥϯτͷઃఆ ϗοτΩʔͷ ઃఆ 
  5. J5FSNͷઃఆ ϑΥϯτΛઃఆ͢Δ w )BDL(FO/FSE͸ҎԼͷϨϙδτϦͰೖखͰ͖Δ w IUUQTHJUIVCDPNZVSV)BDL(FO w )PNFCSFXͰ΋ΠϯετʔϧՄೳ w ৄ͍͠ίϚϯυ͸3&"%.&NEʹ

    w ΠϯετʔϧޙɺJ5FSNͰϑΥϯτΛઃఆ w 1SFGFSFODFTͷ5FYU͔Β'POUΛมߋͰ͖Δ J5FSNͱ͸ʁ ΧϥʔςʔϚͷ ઃఆ ϑΥϯτͷઃఆ ϗοτΩʔͷ ઃఆ 
  6. γΣϧ [TIΛ࢖ͬͯίϯϐϡʔλʹ໋ྩΛ఻͍͑ͯ͘ w γΣϧͱ͸ɺ04ຊମ Χʔωϧ ʹ໋ྩΛ఻͑ΔϓϩάϥϜͷ͜ͱ w Ϣʔβʔ͔Βͷ໋ྩΛڮ౉໋ͯ͠͠ྩΛ఻͑ͯ͘ΕΔ w γεςϜͱϢʔβʔͷؒʹೖΔ֪γΣϧ

    w γΣϧʹ͸͍͔ͭ͘छྨ͕͋Δ w CBTI w Ұ൪޿͘࢖ΘΕ͍ͯΔγΣϧ w [TI w ΧελϚΠζੑʹ༏ΕͨγΣϧ w ͜ͷதͰ΋[TIΛ࢖͏ w NBD04$BUBMJOBҎ߱Ͱ͸σϑΥϧτͰ[TI͕࢖ΘΕΔΑ͏ʹͳ͍ͬͯΔ w ϗʔϜσΟϨΫτϦʹ͋Δ[TISDϑΝΠϧΛฤूͯ͠ΧελϚΠζ͍ͯ͘͠ γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  7. [TIΛ࢖͑ΔΑ͏ʹ͢Δ ࢖༻͍ͯ͠ΔγΣϧͷ֬ೝɾ[TIΠϯετʔϧɾ੾Γସ͑ # 今使っているシェルは何か # zshが表示されれば、以下はやらなくてOK echo $SHELL # zshがインストールされているか

    cat /etc/shells # インストールされてなければ、Homebrewでインストール brew install zsh # インストールされていればzshに切り替え # zshのパスに書き換えて実行する chsh -s /usr/bin/zsh # ターミナルの再起動 γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  8. [TIͷઃఆ ϝχϡʔิ׬ w ҎԼΛd[TISDʹهड़ zstyle ':completion:*:default' menu select=1 autoload -Uz

    compinit compinit -C γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  9. [TIͷઃఆ 7JNͷΩʔόΠϯυʹม͑Δ w [TIͰ͸σϑΥϧτͰ͸FNBDTͷΩʔόΠϯυʹͳ͍ͬͯΔ w ྫ $USM "Ͱߦ಄ɺ$USM &Ͱߦ຤ʹҠಈͰ͖Δ w

    FNBDT͔Β7JNͷΩʔόΠϯυʹมߋ͢Δ͜ͱ΋Մೳ w d[TISDʹҎԼΛ௥Ճ -v • bindkey -v γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  10. [TIʹϓϥάΠϯಋೖ ϓϥάΠϯϚωʔδϟ[JOJUͷ঺հ w ;TIͷػೳΛ֦ு͢ΔͨΊͷϓϥάΠϯΛಋೖ͢Δ w ݟͨ໨ม͑ͨΓɺิ׬ͳͲͷศརͳػೳΛೖΕΔ͜ͱ͕Ͱ͖Δ w ָʹϓϥάΠϯΛೖΕΔͨΊϓϥάΠϯϚωʔδϟ[JOJUΛೖΕΔ w ଞͷϓϥάΠϯϚωʔδϟ

    PINZ[TIɺQSF[UPͳͲ ͱൺֱͯ͠ߴ଎ w ϓϥάΠϯΛͨ͘͞ΜೖΕΔͱىಈʹ͕͔͔࣌ؒΓ͕ͪ w ;JOJUͩͱىಈ଎౓͕ѱԽ͠ʹ͍͘ γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  11. [TIʹϓϥάΠϯಋೖ ϓϥάΠϯϚωʔδϟ[JOJUͷΠϯετʔϧɾϓϥάΠϯͷ௥Ճํ๏ w ҎԼͷίϚϯυΛ࢖ͬͯΠϯετʔϧ͢Δ w d[TISDʹ௥Ճ͍ͨ͠ϓϥάΠϯΛهड़ w [JOJUJDFͰ௚ޙͷ[JOJUMJHIU΍[JOJUMPBEͷڍಈΛมߋͰ͖Δ bash -c

    "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)" zinit light プラグイン名 # レポートを無効にする zinit load プラグイン名 # レポートを有効にする zinit ice wait lucid # 遅延ロード&ロードした時コンソール出力しない zinit ice depth=1 # git clone時のdepthを指定 γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  12. ;TIʹϓϥάΠϯಋೖ [JOJUΛ࢖ͬͯࣗ෼͕௥Ճͨ͠ϓϥάΠϯ w ࣗ෼͕௥Ճ͍ͯ͠ΔϓϥάΠϯ w SPNLBUWQPXFSMFWFML w [TIVTFST[TIBVUPTVHHFTUJPOT w [EIBSNBDPOUJOVVNGBTUTZOUBYIJHIMJHIUJOH

    w [TIVTFST[TIDPNQMFUJPOT w d[TISDʹҎԼͷΑ͏ʹهड़ w [JOJUJDFΛ࢖ͬͯ஗ԆಡࠐΈͤ͞Δ͜ͱͰ[TIͷىಈΛ଎͍ͯ͘͠Δ zinit ice depth=1; zinit light romkatv/powerlevel10k zinit ice wait lucid; zinit light zsh-users/zsh-autosuggestions zinit ice wait lucid; zinit light zdharma-continuum/fast-syntax-highlighting zinit ice wait lucid; zinit light zsh-users/zsh-completions γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  13. ศརͳίϚϯυΛೖΕΔ 3VTU੡ͷศརͳίϚϯυ w Πϯετʔϧ͢Δͱ࢖͑ΔɺศརͳίϚϯυΛҰ෦঺հ w FYB w ϑΝΠϧҰཡΛ͍͍ײ͡ʹग़ྗͯ͘͠ΕΔ ϞμϯͳMT 

    w CBU w ϑΝΠϧΛγϯλοΫεϋΠϥΠτͯ͠දࣔ ϞμϯͳDBU  w OBWJ w ίϚϯυͷνʔτγʔτͷදࣔɾ࡞੒͕Ͱ͖Δ w HSFY w ೖྗ͞Εͨจࣈ͕ώοτ͢ΔΑ͏ͳਖ਼نදݱΛग़ྗͯ͘͠ΕΔ w ঺հͨ͠ίϚϯυ͸)PNFCSFXͰΠϯετʔϧͰ͖·͢ w CSFXJOTUBMM ίϚϯυ໊ γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  14. [TIͷߴ଎Խ ઃఆϑΝΠϧͷίϯύΠϧ w ઃఆ͕ଟ͘ͳͬͯ͘Δͱɺ[TIͷىಈ͕஗͘ͳͬͯ͠·͏ w ઃఆϑΝΠϧΛίϯύΠϧ͢Δͱ࣮ߦ଎౓্͕͕Δ w εΫϦϓτΛίϯύΠϧͯ͘͠ΕΔͷ͕[DPNQJMF w [TI͸ίϯύΠϧͰͰ͖ͨϑΝΠϧΛಡΈࠐΜͰ͘ΕΔ

    [XDϑΝΠϧ  w [DPNQJMFͷޙʹϑΝΠϧ໊Λࢦఆ͢ΔͱίϯύΠϧͯ͘͠ΕΔ w [DPNQJMFϑΝΠϧ໊Λ࣮ߦ͢Δ w d[TISDʹҎԼΛॻ͍ͯɺࣗಈతʹίϯύΠϧͯ͘͠ΕΔΑ͏ʹ͢Δͱָ if [ ~/.zshrc -nt ~/.zshrc.zwc ]; then zcompile ~/.zshrc fi γΣϧͱ͸ʁ [TIͷಋೖ [TIͷઃఆ ϓϥάΠϯͷ ಋೖ ίϚϯυͷ ಋೖ ߴ଎Խ 
  15. ઃఆϑΝΠϧΛ(JU)VCʹஔ͜͏ EPU fi MFTΛ࡞Ζ͏ w ઃఆϑΝΠϧΛ(JU)VCͷϨϙδτϦʹஔ͍͓ͯ͘ͱɺෳ਺ͷ1$ͰઃఆΛڞ༗ Ͱ͖Δ w ͦͷͨΊͷϨϙδτϦͷ໊લΛEPU fi

    MFTͱݺͿ w ઃఆϑΝΠϧͷ໊લͷଟ͕͔͘Β͸͡·Δ͜ͱ͕༝དྷ w ࣗ෼ͷEPU fi MFT w IUUQTHJUIVCDPN1FOQFOEPU fi MFT w ݩͷઃఆϑΝΠϧͷ৔ॴʹγϯϘϦοΫϦϯΫΛஔ͍ͯɺຊମ͸EPU fi MFTͷத ਎Λࢀর͢ΔΑ͏ʹ͍ͯ͠Δ w ྫ 6TFSTVFIBSB[TISDˠ6TFSTVFIBSBEPU fi MFTDPO fi H[TI[TISD EPU fi MFTͱ͸ʁ J5FSNͷ ઃఆϑΝΠϧ 
  16. ·ͱΊ λʔϛφϧɾγΣϧΛศརʹ͍ͯ͘͠ w λʔϛφϧ΍γΣϧΛศརʹ w λʔϛφϧ͸J5FSNΛ࠾༻ͨ͠ w ΧϥʔςʔϚɺϑΥϯτɺϗοτΩʔͷઃఆΛߦͳͬͨ w γΣϧ͸[TIΛ࠾༻ͨ͠

    w ϓϩϯϓτɺิ׬ɺΩʔόΠϯυͷઃఆΛߦ͍ɺศརͳίϚϯυ΋ಋೖͨ͠ w ઃఆΛଞͷ1$ͱಉظ͢Δ w (JU)VCʹઃఆϑΝΠϧΛஔ͘͜ͱʹΑΓɺͲͷ1$Ͱ΋ಉ͡ઃఆ͕࢖͑Δ w λʔϛφϧ΍γΣϧͷઃఆʹͩ͜Θͬͯɺศརͳ։ൃϥΠϑΛૹ͍͖ͬͯ·͠ ΐ͏