Unit4ã®æ°¸å±±ã§ãã dotfileså¼ããè¶£å³ã«ãã¦ãã¾ãã
ä¸ã«dotfilesã顿ã¨ããè¨äºã¯æ°å¤ãåå¨ãã¦ãã¾ãããã®å¤§åã¯ãdotfilesãä½ã£ã¦ã¿ããããããã£ã¦ç®¡çãã¦ãã¾ãããªã©ã®è¡¨å±¤çãªé¨åã®ç´¹ä»ã«çã¾ãããã®å¥¥ã«ããã¹ãç´°é¨ã®ãã ãããåäººã®ææ³ã«ã¾ã§è¸ã¿è¾¼ãã è¨äºã¯æ°ããã»ã©ããããã¾ããã
ããã§ãæ¬è¨äºã§ã¯ç§ã®dotfilesã顿ã«ãã®åæ§æè¦ç´ ã«ã¤ãã¦ãªã¹ã¹ã¡, TIPS, ãã ããã«åé¡ããå¯è½ãªéã詳細ã«ç´¹ä»ãã¾ãã
æ¬è¨äºã¯çè ã®é¢å¿ã®é½åä¸ãZshã«é¢ããé ç®ã«å¤§ããæ¯éãç½®ãã¦ãã¾ãããæ¿ç¥ãããã ããã
- dotfilesã¨ã¯
- dotfilesã使ãããã¨ã®å©ç¹
- è¨äºã®æ§æ
- Zshç·¨
- [ãªã¹ã¹ã¡] ãã©ã°ã¤ã³ã®ç®¡çã«Zinitã使ã
- [ãªã¹ã¹ã¡] Zshãã©ã°ã¤ã³ã¯éåæèªã¿è¾¼ã¿ãã
- [ãªã¹ã¹ã¡] .zshrc ã«æ¸ãè¨å®ã¯æå°éã«çãããã®ä»ãé å»¶ããã
- [ãªã¹ã¹ã¡] BSDç³»CLIãã¼ã«ãGNUç³»ã«ç½®ãæãã (macOS)
- [TIPS] ä¸è¦ãªã³ãã³ããhistoryããé¤å¤ãã
- [ãã ãã] $ZDOTDIR ã夿´ãã
- Zshãã©ã°ã¤ã³ç·¨
- Zshå°ãã¿ç·¨
- Gitç·¨
- Tmuxç·¨
- macç·¨
- ãã®ä»
- ã¾ã¨ã
- We are hiring!
dotfilesã¨ã¯
*nixã®ã½ããã¦ã§ã¢ã«ã¯ãæ
£ä¾çã«.ããå§ã¾ããã¡ã¤ã«ã«è¨å®ãè¨è¿°ãããã®ãå¤ãåå¨ãã¦ãã¾ãã
- Bash:
.bashrc,.bash_profileãªã© - Git:
.gitconfig - Vim:
.vimrc - etc...
dotfilesã¯ãããã®.ããå§ã¾ãè¨å®ãã¡ã¤ã«å
¨è¬ãæããã¾ãããããã®è¨å®ãã¡ã¤ã«ã管çãããªãã¸ããªãdotfilesãªãã¸ããªã¨å¼ã³ã¾ãã
ä¸è¬ã«ãåã«dotfilesã¨ãã£ãå ´åã¯ãã®dotfilesãªãã¸ããªãæå³ãããã¨ãå¤ãã§ã (以ä¸ãdotfilesãªãã¸ããªãåã«dotfilesã¨è¡¨è¨ãã¾ã)ã
ä½è«ã§ãããdotfilesãè²ã¦ããåªå®ãããããæè¦ãçæ ½ã®è²æã«è¿ããã¨ãããdotfilesãå¼ããã¨ãæãã¦ãdotfilesçæ ½ãã¨è¡¨ç¾ããããã¨ãããã¾ãã
dotfilesã使ãããã¨ã®å©ç¹
dotfilesã使ãããã¨ã«ã¯ä»¥ä¸ã®ãããªå©ç¹ãããã¾ãã
- è¨å®ãã¡ã¤ã«ã®å¤æ´å±¥æ´ãæ®ãã
- è¤æ°ã®ãã·ã³ã§åãéçºä½é¨ãå¾ãããããã«ãªã
- æ°è¦ãã·ã³ã®ã»ããã¢ãããç°¡åã«ãªã
è¨äºã®æ§æ
以ä¸ã®ç¯ã§ã¯çè ã®dotfilesããã¨ã«æ§ã ãªé ç®ã«ã¤ãã¦è©³ç´°ã«è§£èª¬ãã¾ã *1ã
åé ç®ã«ã¯æ§è³ªã«å¿ãã¦ä»¥ä¸ã®ããããã®ããªãã£ã¯ã¹ãã¤ãã¦ãã¾ãã
- [ãªã¹ã¹ã¡]: å¾ããã¨ã§ãªãããã®å©çãå¾ãããé ç®
- [TIPS]: ããããªå©çãå¾ãããé ç®ãã¾ãã¯å°ãã¿
- [ãã ãã]: çè ã®ææ³ããã ãããå¼·ãåæ ãããé ç®
Zshç·¨
ãã°ã¤ã³ã·ã§ã«ã«ã¯Zshãç¨ãã¦ãã¾ãã 以ä¸ã§ã¯Zshã®è¨å®ã«é¢ãã¦ç´¹ä»ãã¾ãã
[ãªã¹ã¹ã¡] ãã©ã°ã¤ã³ã®ç®¡çã«Zinitã使ã
Zshã®ãã©ã°ã¤ã³ããã¼ã¸ã£ã«ã¯ Antigen ã zplug ãããã¾ãããåºæ¬çã« Zinit ãç¨ããã®ããªã¹ã¹ã¡ã§ãã
Zinitã¯å®è¡é度ã«åªãããã©ã°ã¤ã³ããã¼ã¸ã£ã§ãã ã¾ãããã©ã°ã¤ã³ã®éåæèªã¿è¾¼ã¿ã«å¯¾å¿ãã¦ãããå¾è¿°ããããã«é©åã«ãã©ã°ã¤ã³ã®èªã¿è¾¼ã¿ãæé©åãããã¨ã§Zshã®èµ·åæéãé常ã«çãã§ãã¾ãã
ããã«ç¹çãã¹ãæ©è½ã¨ãã¦ãGitHub Releasesããã®ãã©ã°ã¤ã³ã®ã¤ã³ã¹ãã¼ã«ã«å¯¾å¿ãã¦ãã¾ãã ãã®ãããGitHub Releasesã§ããªãã«ããã¤ããªãé å¸ãã¦ããGoãRust製ã®CLIãã¼ã«ãä»ã®Zshãã©ã°ã¤ã³ã¨åãããã«æ±ãã¾ãã
zinit wait lucid light-mode as'program' from'gh-r' for \ pick'ripgrep*/rg' @'BurntSushi/ripgrep'
Zinitãå©ç¨ããå©ç¹ã¨æ¬ ç¹ã以ä¸ã«ã¾ã¨ãã¾ãã
- å©ç¹
- é«éã«åä½ãã
- ãã©ã°ã¤ã³ãéåæèªã¿è¾¼ã¿ã§ãã
- GitHub Releasesããã®ã¤ã³ã¹ãã¼ã«ã«å¯¾å¿ãã¦ãã
- æ¬ ç¹
- ãªãã·ã§ã³ãªã©ã®æå®æ¹æ³ãããè¤é
注é: Zinitã«ã¤ãã¦
ä¸è¨ã®3ã¤ã®å©ç¹ã®ããã«ããã®è¨äºã§ã¯Zinitããªã¹ã¹ã¡ãã¦ãã¾ããã2022å¹´ç¾å¨Zinitãåãå·»ãç¶æ³ã¯ããä¸å®å®ã§ãã ãã®çµç·¯ã«ã¤ãã¦ããã¤ã¾ãã§èª¬æãã¾ãã
Zinit ã¯ãã¨ã㨠Zplugin (zdharma/zplugin (ãªã³ã¯å ã¯å餿¸ã¿)) ã¨ããååã§éçºããã¦ãã¾ãããã2020å¹´1æé ã« Zinit (zdharma/zinit) ã¸ã¨æ¹åããã¾ããã ãã®å¾ããzdharma/zinit ãªãã¸ããªã§éçºãç¶ãããã¾ãããã2021å¹´10æã«ä½è ã§ãã@psprintæ°ãçªå¦Zinitã®ãªãã¸ããªã¨zdharma organizationãåé¤ãã¾ããã
ä¸è¨ã§ç´¹ä»ãã¦ãã zdharma-continuum/zinit ã¯æå¿ã«ãã£ã¦å¾©æ§ãããæãããã¥ã©ã¼ãªZinitã®Forkã§ãZinitã¦ã¼ã¶ã®ã³ãã¥ããã£ã«ããç¾å¨ãéçºãç¶ãããã¦ãã¾ãã
ç¾å¨ã® zdharma organization㨠zdharma/zinitãããã³ããã«ãªã³ã¯ãè¨è¼ããã¦ãã z-shell/zi (ãã¡ããZinitã®Fork) ã¯ç¬¬ä¸è ã«ããååå¾ããããã®ã§å ä½è ã§ãã@psprintæ°ã¨ã¯ç¡é¢ä¿ã§ã*2ã zdharma-continuum/zinit 㨠z-shell/zi ã®ä¸èº«ã¯ã©ã¡ããã»ã¼åä¸ã§ãããå人çãªææ ãã z-shell/zi ã§ã¯ãªã zdharma-continuum/zinit ã®å©ç¨ããªã¹ã¹ã¡ãã¦ãã¾ãã
ã¾ããéåº¦ãæ©è½é¢ã«å¯¾ãã¦ã®ãã ãããèãã®ã§ããã° zimfw/zimfw ãªã©ä»ã®ãã©ã°ã¤ã³ããã¼ã¸ã£ã®å©ç¨ãè¦éã«ãããã¨ããã§ãããã
[ãªã¹ã¹ã¡] Zshãã©ã°ã¤ã³ã¯éåæèªã¿è¾¼ã¿ãã
Zinitã§ã¯ããã©ã°ã¤ã³ã®èªã¿è¾¼ã¿æã« wait ãªãã·ã§ã³ãæå®ãããã¨ã§ãã©ã°ã¤ã³ã®èªã¿è¾¼ã¿ãéåæã«ã§ãã¾ãã
ãã©ã°ã¤ã³ã®èªã¿è¾¼ã¿ãéåæã«ããã¨ãZshåæåæã®ãªã¼ãããããå°ãããªããèµ·åã®é«éåã«ç¹ããã¾ãã
zinit wait lucid blockf light-mode for \ @'zsh-users/zsh-autosuggestions' \ @'zsh-users/zsh-completions' \ @'zdharma-continuum/fast-syntax-highlighting'
ãã ããã·ã§ã«ããã³ããã¯åæçã«èªã¿è¾¼ãå¿ è¦ãããã¾ãã ããã¯ãåæçã«èªã¿è¾¼ã¾ãªããã°ããã³ããã®ååã®ã¬ã³ããªã³ã°ãè¡ããªãããã§ãã
- ã·ã§ã«ããã³ãã: åæçã«èªã¿è¾¼ã
- ãã以å¤: éåæçã«èªã¿è¾¼ã
[ãªã¹ã¹ã¡] .zshrc ã«æ¸ãè¨å®ã¯æå°éã«çãããã®ä»ãé
å»¶ããã
çè
ã® .zshrc ãè¦ãã¨ã.zshrc ã§ã¯Zinitã®åæåãããã³ããã®èªã¿è¾¼ã¿ãªã©ã®ã¿ãè¡ã£ã¦ãããã¨ããããã¨æãã¾ãã
ãã®ä»ã®ãã©ã°ã¤ã³ã®èªã¿è¾¼ã¿ããã¨ã¤ãªã¢ã¹ã®ç»é²ãªã©ã¯ .zshrc.lazy ã¨ããå¥ãã¡ã¤ã«ã«åå²ãããã®èªã¿è¾¼ã¿ãé
å»¶ããããã¨ã§èµ·åæéãããã«çããã¦ãã¾ãã
# $ZDOTDIR/.zshrc zinit wait lucid light-mode as'null' \ atinit'source "$ZDOTDIR/.zshrc.lazy"' \ for 'zdharma-continuum/null'
.zshrc.lazy ãéåæã§èªã¿è¾¼ãã§ããä¾
ä¸è¨ã§ç¨ãã¦ããzdharma-continuum/null ã¯é
å»¶å®è¡ãå®ç¾ããããã«ç¨æããã¦ãã空ã®ãªãã¸ããªã§ãã
ã§ã¯ã.zshrc.lazy ã®é
å»¶èªã¿è¾¼ã¿ã®æç¡ã§ã©ã®ç¨åº¦èµ·åé度ã«å·®ãã§ãã®ãè¦ã¦ã¿ã¾ãããã
ã¾ãã¯é å»¶èªã¿è¾¼ã¿ãç¡å¹åããå ´åã®ä¾ã§ãã
# $ZDOTDIR/.zshrc #zinit wait lucid light-mode as'null' \ # atinit'source "$ZDOTDIR/.zshrc.lazy"' \ # for 'zdharma-continuum/null' source "$ZDOTDIR/.zshrc.lazy"
$ for i in {1..5}; do time zsh -ic exit; done zsh -ic exit 0.07s user 0.04s system 93% cpu 0.111 total zsh -ic exit 0.07s user 0.04s system 93% cpu 0.110 total zsh -ic exit 0.07s user 0.04s system 94% cpu 0.107 total zsh -ic exit 0.07s user 0.04s system 93% cpu 0.108 total zsh -ic exit 0.07s user 0.04s system 94% cpu 0.113 total
.zshrc.lazyãé
å»¶èªã¿è¾¼ã¿ããªãã£ãå ´åã®Zshã®èµ·åæé
ç¶ãã¦.zshrc.lazy ãé
å»¶èªã¿è¾¼ã¿ããå ´åã§ãã
$ for i in {1..5}; do time zsh -ic exit; done zsh -ic exit 0.02s user 0.01s system 84% cpu 0.033 total zsh -ic exit 0.02s user 0.01s system 82% cpu 0.038 total zsh -ic exit 0.02s user 0.01s system 84% cpu 0.033 total zsh -ic exit 0.02s user 0.01s system 85% cpu 0.033 total zsh -ic exit 0.02s user 0.02s system 86% cpu 0.037 total
.zshrc.lazyãé
å»¶èªã¿è¾¼ã¿ããå ´åã®Zshã®èµ·åæé
èµ·åæéãç´1/3ã«ãªã£ã¦ãã¾ãã
Shellã¯1æ¥ã«ä½åº¦ãèµ·åãããã¨ã«ãªãã¢ããªã±ã¼ã·ã§ã³ã§ãããããèµ·åé度ã®å·®ã¯éçºä½é¨ã«ç´çµãã¦ãã¾ãã
[ãªã¹ã¹ã¡] BSDç³»CLIãã¼ã«ãGNUç³»ã«ç½®ãæãã (macOS)
macOSã«ããã©ã«ãã§ã¤ã³ã¹ãã¼ã«ããã¦ããCLIãã¼ã«ã«ã¯æ´å²ççµç·¯ããBSDç³»ã®ãã®ãæ¡ç¨ããã¦ãã¾ãã
BSDç³»ã®CLIãã¼ã«ã¯ã³ãã³ãã©ã¤ã³ãªãã·ã§ã³ãä¸é¨ã®åä½ãGNUç³»ã¨ç°ãªã£ã¦ããããã°ãã°æ··ä¹±ã®åå ã«ãªãã¾ãã
䏿¹ã§ãç¾ä»£ã®ã·ã§ã«ã¹ã¯ãªããã¯å¤ãã®å ´åCIãDockerã³ã³ããå ãªã©ã®GNUç³»CLIãã¼ã«ãã¤ã³ã¹ãã¼ã«ããã¦ããLinuxä¸ã§åä½ãã¾ãã
ãã¼ã«ã«ç°å¢ãGNUç³»CLIãã¼ã«ã§çµ±ä¸ãããã¨ã§ãéçºæã®ããã¬ã¹ãã¬ã¹ã軽æ¸ã§ãã¾ãã
# GNUç³»ã®CLIãã¼ã«ãã¤ã³ã¹ãã¼ã«ãã $ brew install coreutils findutils gnu-sed grep # .zshrc.lazy case "$OSTYPE" in darwin*) (( ${+commands[gdate]} )) && alias date='gdate' (( ${+commands[gls]} )) && alias ls='gls' (( ${+commands[gmkdir]} )) && alias mkdir='gmkdir' (( ${+commands[gcp]} )) && alias cp='gcp' (( ${+commands[gmv]} )) && alias mv='gmv' (( ${+commands[grm]} )) && alias rm='grm' (( ${+commands[gdu]} )) && alias du='gdu' (( ${+commands[ghead]} )) && alias head='ghead' (( ${+commands[gtail]} )) && alias tail='gtail' (( ${+commands[gsed]} )) && alias sed='gsed' (( ${+commands[ggrep]} )) && alias grep='ggrep' (( ${+commands[gfind]} )) && alias find='gfind' (( ${+commands[gdirname]} )) && alias dirname='gdirname' (( ${+commands[gxargs]} )) && alias xargs='gxargs' ;; esac
[TIPS] ä¸è¦ãªã³ãã³ããhistoryããé¤å¤ãã
Zshã§ã¯ãzshaddhistory ã¨ããhookãå®ç¾©ãããã¨ã§historyã¸ã®ã³ãã³ãã®ç»é²/é¤å¤ãå¶å¾¡ã§ãã¾ãã
zshaddhistory ã®çµäºã¹ãã¼ã¿ã¹ã0ã®å ´åãç´åã®ã³ãã³ãã¯historyã«ä¿åããã0以å¤ã®å ´åã¯historyããé¤å¤ããã¾ãã
cd ã ls ãªã©ã¯å¤ãã®å ´åhistoryã«ä¿åãã¦ãå½¹ã«ç«ããªãã®ã§é¤å¤ãã¦ãã¾ãã
zshaddhistory() {
local line="${1%%$'\n'}"
[[ ! "$line" =~ "^(cd|jj?|lazygit|la|ll|ls|rm|rmdir)($| )" ]]
}
zshaddhistoryãç¨ãã¦ä¸é¨ã®ã³ãã³ããhistoryããé¤å¤ããä¾
[ãã ãã] $ZDOTDIR ã夿´ãã
é常 .zshrc ãªã©ã¯ãã¼ã ãã£ã¬ã¯ããªã«é
ç½®ããããã®ãèªã¿è¾¼ã¾ãã¾ããã$ZDOTDIR ã¨ããç°å¢å¤æ°ã夿´ãããã¨ã§ä»»æã®ãã£ã¬ã¯ããªã«é
ç½®ã§ããããã«ãªãã¾ãã
$ZDOTDIR ã夿´ããå ´å㯠.zshenv ã¨ãããã¡ã¤ã«ããã¼ã ãã£ã¬ã¯ããªã«ä½æãã¾ãã
# ~/.zshenv export XDG_CONFIG_HOME="$HOME/.config" export ZDOTDIR="$XDG_CONFIG_HOME/zsh" # .zshrc ã .zprofile ã ~/.config/zsh ããèªã¿è¾¼ã¾ããããã«ãªã
$ZDOTDIR ã夿´ããä¾
çè
ã¯XDG Base Directory Specificationã«å¾ãå½¢ã§$ZDOTDIRãè¨å®ãã¦ãã¾ãã
XDG Base Directory Specificationã¯è¨å®ãã¡ã¤ã«ããã£ãã·ã¥ãã¡ã¤ã«ãé ç½®ãããã£ã¬ã¯ããªã®æ§é ã«é¢ããè¦ç´ã§ã*3ã XDG Base Directory Specificationã«å¾ããã¨ã§ãã¼ã ãã£ã¬ã¯ããªãæ´çã§ããã¾ããè¨å®ãã¡ã¤ã«ãªã©ãä¸ç®æã«éç´ã§ãããã管çããããããªãã¾ãã
Zshãã©ã°ã¤ã³ç·¨
以ä¸ã§ã¯ä½¿ç¨ãã¦ããZshãã©ã°ã¤ã³ã®ãã¡ããã¤ãã«ã¤ãã¦ç´¹ä»ã»è§£èª¬ãã¾ãã
ç¾å¨ãçè ã¯ä»¥ä¸ã®ãããªZshãã©ã°ã¤ã³(ã¾ãã¯CLIãã¼ã«)ãZinitãç¨ãã¦ã¤ã³ã¹ãã¼ã«ãã¦å©ç¨ãã¦ãã¾ã*4ã
Zinitãç¨ãã¦å°å
¥ãã¦ããZshãã©ã°ã¤ã³ã»CLIãã¼ã«
- zsh-users/zsh-history-substring-search
- hlissner/zsh-autopair
- mafredri/zsh-async
- zsh-users/zsh-autosuggestions
- zsh-users/zsh-completions
- zdharma-continuum/fast-syntax-highlighting
- momo-lab/zsh-replace-multiple-dots
- yuki-yano/zeno.zsh
- wfxr/forgit
- dandavison/delta
- itchyny/mmv
- BurntSushi/ripgrep
- Ryooooooga/almel
- dbrgn/tealdeer
- asdf-vm/asdf
- cli/cli
- ogham/exa
- mikefarah/yq
- rhysd/hgrep
- denisidoro/navi
- mrowa44/emojify
[ãªã¹ã¹ã¡] zeno.zsh
zeno.zshã¯Deno製ã®Zshãã©ã°ã¤ã³ã§ãã
zeno.zsh㯠ç¥èªå±é 㨠FZFãç¨ããè£å® ã¨ãã2ã¤ã®æ©è½ãæä¾ãã¾ãã
1. ç¥èªå±é
ç¥èªå±éã¯èªåå±éãããaliasã®ãããªæ©è½ã§ã (Vimmerã«ã¨ã£ã¦ã¯iabã¨è¨ã£ãæ¹ãéãããããããããã)ã
# $XDG_CONFIG_HOME/zeno/config.yml snippets: - name: g keyword: g snippet: git - name: yyyymmdd keyword: yyyymmdd snippet: date "+%Y%m%d" evaluate: true # snippetãã·ã§ã«ã¹ã¯ãªããã¨ãã¦è§£éãããã®åºåãå±éãã global: true # è¡é 以å¤ã§ãå±éãã (Zshã®global aliasç¸å½)
$ g<ã¹ãã¼ã¹> â å³åº§ã«å±éããã $ git $ git tag yyyymmdd<ã¨ã³ã¿ã¼> â å±éãããå®è¡ããã $ git tag 20220401
ç¥èªå±éã§ã¯ãé常ã®aliasã¨ã¯ç°ãªããå±éå¾ã®ã³ãã³ããhistoryã«ä¿åãããã¨ããå©ç¹ãããã¾ãã
ç¥èªå±éã®ã¿ã§ããã°ãolets/zsh-abbr ãªã©ã®Zshãã©ã°ã¤ã³ã§ãå®ç¾ã§ãã¾ãããzeno.zshã§ã¯ããã«å±éã«å¿ è¦ãªã³ã³ããã¹ããæå®ãããã¨ãã§ãã¾ãã
snippets: - name: git c keyword: c snippet: commit context: lbuffer: ^git\s # gitã³ãã³ããå ¥åãã¦ããã¨ãã®ã¿å±éãã - name: git push -f keyword: -f snippet: --force-with-lease context: lbuffer: ^git(\s+\S+)*\s+push\s # git pushãå ¥åãã¦ããã¨ãã®ã¿å±éãã
$ git c<ã¹ãã¼ã¹> â å±éããã $ git commit $ git push -f<ã¨ã³ã¿ã¼> â å±éãããå®è¡ããã $ git push --force-with-lease $ echo c<ã¹ãã¼ã¹> â å±éãããªã $ echo c
ã³ã³ããã¹ããæå®ã§ãããã¨ã§ãglobal aliasèªä½ã®å©ä¾¿æ§ã»æç¨æ§ãä¿ã£ãã¾ã¾ã°ãã¼ãã«åå空éã®æ±æãé¿ãããã¨ãã§ãã¾ã *5 ã
ã¾ããGit aliasã¨ã¯ç°ãªããhistoryã«å±éå¾ã®ã³ãã³ããä¿åãããç¹ã§ãåªãã¦ãã¾ãã
2. FZFãç¨ããè£å®
FZF ã¯Go製ã®ãã¡ã¸ã¼ãã¡ã¤ã³ãã¼ã§ãã
zeno.zshã§ã¯ä»»æã®ã³ãã³ãã«å¯¾ãããFZFãç¨ããã¤ã³ã¿ã©ã¯ãã£ããªè£å®ãã«ã¹ã¿ãã¤ãºã§ãã¾ã *6ã
ã¾ããããã©ã«ãã§git-addãªã©ã®ããã¤ãã®Gitã³ãã³ããªã©ã«å¯¾ããè£å®ãçµã¿è¾¼ã¾ãã¦ãããããããç¨åº¦è¨å®ä¸è¦ã§ãã®æ©æµãåãããã¨ãã§ãã¾ãã

git-add ã®ãã¡ã¸ã¼è£å®
zeno.zshã¯å®è¡ã«Denoã®ã©ã³ã¿ã¤ã ãè¦æ±ãã¾ããã使¥ãå¹çåã§ããããé常ã«ãªã¹ã¹ã¡ã§ããZshãã©ã°ã¤ã³ã§ãã
çè ã®ãã®ä»ã®zeno.zshã®è¨å®ã«ã¤ãã¦ã¯ä»¥ä¸ã§ç¢ºèªã§ãã¾ãã
https://github.com/NagayamaRyoga/dotfiles/blob/main/config/zeno/config.ymlgithub.com
â» zeno.zsh㯠zsh-users/zsh-syntax-highlighting ã¨ã®ç¸æ§ãæªãããã代ããã« zdharma-continuum/fast-syntax-highlighting ã使ç¨ãããã¨ããªã¹ã¹ã¡ãã¾ãã
[ãªã¹ã¹ã¡] zsh-replace-multiple-dots
momo-lab/zsh-replace-multiple-dotsã¯å
¥åããã ... ã ../.. ã¸ã¨å±éããã ãã®ã·ã³ãã«ãªãã©ã°ã¤ã³ã§ãã
$ cd ... â å±éããã $ cd ../..
ä¸è¿°ã®zeno.zshã¨çµã¿åããããã¨ã§ã...<ã¨ã³ã¿ã¼> ã¨å
¥åããã ãã§ cd ../.. ã«å±éãããããã«ãã¦ãã¾ã *7ã
snippets: - name: .. keyword: .. snippet: cd .. - name: ../.. keyword: ../.. snippet: cd ../.. - name: ../../.. keyword: ../../.. snippet: cd ../../..
zeno/config.yml ã®ä¾
ã¾ããgo test ./... ãªã©ã¨å
¥åããã¨ãã« go test ./../.. ã¨å±éãããã®ãé²ãããã以ä¸ã®ããã«ZLEã¦ã£ã¸ã§ãããåç»é²ãããã¨ã§ go ã³ãã³ãã®ã¿ ... ã®å±éãé²ãã§ãã¾ãã
replace_multiple_dots_exclude_go() {
if [[ "$LBUFFER" =~ '^go ' ]]; then
zle self-insert # goã³ãã³ãã®ã¿é常éã `.` ãå
¥åãã
else
zle .replace_multiple_dots # goã³ãã³ã以å¤ã§ã¯ `...` ã `../..` ã«å±é
fi
}
zle -N .replace_multiple_dots replace_multiple_dots
zle -N replace_multiple_dots replace_multiple_dots_exclude_go
go ã³ãã³ãã®ã¿ zsh-replace-multiple-dots ãç¡å¹åããä¾
[ãªã¹ã¹ã¡] ã³ã¼ãã¹ããããã®ç®¡çã« navi ãå©ç¨ãã
ç¹ã«æ¥åã§ã¯DBã¸ã®ã¢ã¯ã»ã¹ã³ãã³ããããã¸ã§ã¯ãã®èµ·åã³ãã³ããªã©ã®éå¤ã§å°è¦æ¨¡ãªã³ãã³ããä½åº¦ãå ¥åãããã¨ã«ãªãã¾ãã
䏿¹ã§ãããããã¹ã¦æ£ç¢ºã«ãé·æéã«æ¸¡ã£ã¦è¨æ¶ããã®ã¯ç¾å®çã§ã¯ããã¾ããããå¿ãããã³ã«ããã¸ã§ã¯ãã®READMEãgrepããã®ãæéã§ãã
ãã®ãããªå ´åã« history ããã®æ¤ç´¢ãç¨ããæ¹ãããã¨æãã¾ãããç§ã¯ãã®ãããªã³ã¼ãã¹ããããã®ç®¡çã« denisidoro/navi ã使ç¨ãããã¨ããªã¹ã¹ã¡ãã¾ãã
naviã¯CLIã®ãã¼ãã·ã¼ã管çãã¼ã«ã§ãã ç¬èªå½¢å¼ã®ããã¹ããã¡ã¤ã«ã§ã³ã¼ãã¹ããããã®ãã¼ãã·ã¼ãã管çã§ããFZFãªã©ã®ãã¡ã¸ã¼ãã¡ã¤ã³ãã¼ãç¨ãã¦ãããã®æ¤ç´¢ãå®è¡ãè¡ãªãã¾ãã

naviãç¨ãã¦ã³ã¼ãã¹ããããã管çãããã¨ã§ãhistory ã®ä¸éè¶
ããªã©ã«ãã£ã¦ä»¥åã«å®è¡ããã³ãã³ããè¸çºãããã¨ãæ°ã«ããªãã¦ãããªãä»ã使ãããã¼ãã·ã¼ããå°è¦æ¨¡ãªå人ç¨ã®ããã¥ã¡ã³ãã¨ãã¦ãæ´»ç¨ã§ãã¾ãã
Zshå°ãã¿ç·¨
以ä¸ã§ã¯ãã®ä»ã®Zshã«é¢ããå°ãã¿ã«ã¤ãã¦ç´¹ä»ãã¾ãã
[TIPS] PATHç°å¢å¤æ°ã§ã¯ãªã path ã使ã
Bashã§ã¯ç¹å®ã®ãã£ã¬ã¯ããªã«PATHãéãããã«ç°å¢å¤æ° PATH ã使ç¨ãã¾ãããZshã§ã¯ããã«å ãã¦é
å夿° path ãç¨æããã¦ãã¾ãã
$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin $ echo ${(F)path} /usr/local/bin /usr/bin /bin /usr/sbin /sbin
path
path ãç¨ããã¨ã"ç¹å®ã®ãã£ã¬ã¯ããªãåå¨ãã¦ããã¨ãã®ã¿ããã®ãã£ã¬ã¯ããªã PATH ã«è¿½å ãã" ã¨ãã£ããã¨ãç°¡åã«ãèªã¿ãããæ¸ãã¾ãã
# `$GOPATH/bin` ãåå¨ããå ´åã®ã¿ `PATH` ã«è¿½å ãã path=( "$GOPATH/bin"(N-/) "$path[@]" )
path ã¸ãã£ã¬ã¯ããªã追å ããä¾
ã¾ããFPATH ã«å¯¾å¿ãã夿°ã¨ã㦠fpath ãç¨æããã¦ãã¾ãã
[TIPS] docker ã³ãã³ãã䏿¸ããã
Gitã¯Git aliasã git-foo ã¨ããååã®å®è¡å¯è½ãã¡ã¤ã«ã«å¯¾ãã¦PATHãéããã¨ã§ã«ã¹ã¿ã ãµãã³ãã³ããå®ç¾©ãããã¨ãã§ãã¾ãããDockerã§ã¯ãã®ãããªãã¨ã¯ã§ãã¾ããã
ããã§ãç§ã¯ä»¥ä¸ã®ããã« docker ã³ãã³ãã䏿¸ããã¦ãã¾ãã
docker() {
if [ "$1" = "compose" ] || ! command -v "docker-$1" >/dev/null; then
command docker "${@:1}" # é常éãdockerã³ãã³ããå¼ã³åºã
else
"docker-$1" "${@:2}" # docker-foo ã¨ããã³ãã³ããåå¨ããã¨ãã¯ãã¡ããèµ·åãã
fi
}
docker ã³ãã³ã
# docker clean # ExitedãªDockerããã»ã¹ããã¹ã¦åé¤ãã docker-clean() { command docker ps -aqf status=exited | xargs -r docker rm -- } # docker cleani # UntaggedãªDockerã¤ã¡ã¼ã¸ããã¹ã¦åé¤ãã docker-cleani() { command docker images -qf dangling=true | xargs -r docker rmi -- } # docker rm (䏿¸ã) # 弿°ãªãã§ docker rm ããã¨ãã¯ããã»ã¹ãFZFã§é¸æãã¦åé¤ãã docker-rm() { if [ "$#" -eq 0 ]; then command docker ps -a | fzf --exit-0 --multi --header-lines=1 | awk '{ print $1 }' | xargs -r docker rm -- else command docker rm "$@" fi } # docker rmi (䏿¸ã) # 弿°ãªãã§ docker rmi ããã¨ãã¯ã¤ã¡ã¼ã¸ãFZFã§é¸æãã¦åé¤ãã docker-rmi() { if [ "$#" -eq 0 ]; then command docker images | fzf --exit-0 --multi --header-lines=1 | awk '{ print $3 }' | xargs -r docker rmi -- else command docker rmi "$@" fi }
docker ãµãã³ãã³ãã®ä¾
ããã«ãã£ã¦ããçµã¿è¾¼ã¿ã³ãã³ãã®ã¨ã㯠docker fooããã«ã¹ã¿ã ã³ãã³ãã®ã¨ã㯠docker-barã ãªã©ã®å¼ã³åããæ°ã«ããå¿
è¦ããªããªãã¾ãã
Gitç·¨
[ãªã¹ã¹ã¡] ãªãã¸ããªãghqã§ç®¡çãã
ç¹ã«æ¥åã§ã¯ããããã®Gitãªãã¸ããªã§ä½æ¥ãããå¿ è¦ãçºçããã¡ã§ãã ãã®ãããªå ´åã« x-motemen/ghq ãç¨ãããã¨ã§ããªãã¸ããªã®ç®¡çãå¹çåã§ãã¾ãã
ghq ã¯Gitãªãã¸ããª*8ã管çããããã®ã·ã³ãã«ãªãã¼ã«ã§ãã
# $(ghq root)/github.com/NagayamaRyoga/dotfiles ã« # https://github.com/NagayamaRyoga/dotfiles ãã¯ãã¼ã³ãã $ ghq get NagayamaRyoga/dotfiles $ ls -al "$(ghq root)/github.com/NagayamaRyoga/dotfiles" total 40 drwxr-xr-x 11 ryoga.nagayama staff 352 Mar 11 18:36 . drwxr-xr-x 3 ryoga.nagayama staff 96 Mar 11 18:36 .. -rw-r--r-- 1 ryoga.nagayama staff 416 Mar 11 18:36 .editorconfig drwxr-xr-x 13 ryoga.nagayama staff 416 Mar 11 18:36 .git ...
# ghqã§ç®¡çããã¦ãããã¹ã¦ã®ãªãã¸ããªã䏿¬ã§æ´æ°ãã $ ghq list | ghq get --update --parallel
ghq ã®åºæ¬çãªå©ç¨æ¹æ³ã«ã¤ãã¦ã¯ä»¥ä¸ã®ããã¥ã¡ã³ãã詳ããã§ãã
ghq ã¨TmuxãZLEã¨åããã¦å©ç¨ãããã¨ã§ãªãã¸ããªã®åãæ¿ããªã©ãåçã«å¹çåã§ãã¾ãã ghq ã®æ´»ç¨ä¾ã«ã¤ãã¦ã¯ [ãã ãã] ã»ãã·ã§ã³ããªãã¸ããªãã¨ã«åãã ã®ç¯ã§ç´¹ä»ãã¾ãã
[TIPS] XDG Base Directory Specificationã«å¾ã
é常Git㯠~/.gitconfig ãã°ãã¼ãã«ãªè¨å®ãã¡ã¤ã«ã¨ãã¦ç¨ãã¾ãããGitã¯XDG Base Directory Specificationã«æºæ ãã¦ããããã$XDG_CONFIG_HOME/git/config ãåæ§ã«ã°ãã¼ãã«ãªè¨å®ãã¡ã¤ã«ã¨ãã¦å©ç¨ã§ãã¾ãã
$ mv ~/.gitconfig "$XDG_CONFIG_HOME/git/config"
ã¾ãã$XDG_CONFIG_HOME/git/ignore ãã°ãã¼ãã«ãª .gitignore ã¨ãã¦å©ç¨ã§ãããããgit config core.excludesfile '~/.gitignore_global' ãªã©ã¨ããããæç¤ºçã«æå®ããå¿
è¦ã¯ããã¾ããã
# $XDG_CONFIG_HOME/git/config -[core] - excludesfile = ~/.gitignore_global
[ãã ãã] .gitconfig ãåå²ãã
$XDG_CONFIG_HOME/git/config ã«ãã¹ã¦ã®è¨å®ãè¨è¿°ããã¨ãã¡ãã¤ããã¡ã§ãã
ãããã¯ãã¨ã«è¨å®ãåå²ãããã¨ã§è¨å®ã®ç·¨éã確èªããããããªãã¾ãã
[include]
path = conf.d/alias.conf
path = conf.d/user.conf
path = conf.d/delta.conf
path = conf.d/flow.conf
path = conf.d/forgit.conf
path = conf.d/ghq.conf
path = conf.d/gist.conf
path = conf.d/github.conf
path = conf.d/local.conf
$XDG_CONFIG_HOME/git/config ãåå²ããä¾
include.path ã¯ãã®è¨å®ã®æ¸ããã¦ãããã¡ã¤ã«ã®ç¸å¯¾ãã¹ãæå®ã§ããããããã®å ´å $XDG_CONFIG_HOME/git/conf.d/*.conf ãèªã¿è¾¼ãã§ãããã¨ã«ãªãã¾ãã
[ãªã¹ã¹ã¡] commit.verbose ã« true ãè¨å®ãã
git config commit.verbose true ã¨ãããã¨ã§ git commit ã«å¸¸ã« -v/--verbose ãªãã·ã§ã³ã渡ãã¦ããã®ã¨åæ§ã®åä½ã«ãªãã¾ãã
[ãªã¹ã¹ã¡] merge.conflictStyle ã« diff3 ãè¨å®ãã
git config merge.conflictStyle diff3 ã¨ãããã¨ã§ãã¼ã¸ã³ã³ããªã¯ããçºçããéã«ããã¼ã¸å
ã»ãã¼ã¸å
ã®ã¿ã§ãªããã¼ã¸ãã¼ã¹ (両ãã©ã³ãã®å
±éã®å
ç¥) ãã³ã³ããªã¯ããã¼ã«ã¼ã«è¿½å ãããããã«ãªãã¾ãã

merge.conflictStyle ã« diff3 ãæå®ããå ´åã®ãã¼ã¸ã³ã³ããªã¯ã
ããã«ãã£ã¦ããã¼ã¸æã«ã以åã¯ã©ã®ãããªç¶æ ã§ãã£ãããããããããããªãã¾ãã
Tmuxç·¨
[ãã ãã] XDG Base Directory Specificationã«å¾ã
Tmux 3.2以éã§ã¯ $XDG_CONFIG_HOME/tmux/tmux.conf ãè¨å®ãã¡ã¤ã«ã¨ãã¦å©ç¨ã§ãã¾ãã
$ mv ~/.tmux.conf "$XDG_CONFIG_HOME/tmux/tmux.conf"
[ãã ãã] ã»ãã·ã§ã³ããªãã¸ããªãã¨ã«åãã
çè ã¯ã·ã§ã«ã使ãéã¯åºæ¬çã«ã»ã¼ãã¹ã¦ã®ä½æ¥ãTmuxã»ãã·ã§ã³ã®ä¸ã§è¡ã£ã¦ãã¾ããããã®éãGitãªãã¸ããªãã¨ã«ã»ãã·ã§ã³ãç«ã¦ãããã«ãã¦ãã¾ãã
ã»ãã·ã§ã³ãåãããã¨ã§ããªãã¸ããªãã¨ã«ä½æ¥ç¶æ³ãèµ·åãã¦ããããã»ã¹ãç¶æã§ãããããå¥ãªãã¸ããªã§ã®ä½æ¥ããã®å¾©å¸°ãç°¡åã«ãªãã¾ãã
Tmuxã»ãã·ã§ã³ã®èµ·åã»ã¢ã¿ããã»åãæ¿ãã«ã¯ä»¥ä¸ã®ãããªZLEã¦ã£ã¸ã§ããã使ç¨ãã¦ãã¾ãã
# Gitãªãã¸ããªãåæãã widget::ghq::source() { local session color icon green="\e[32m" blue="\e[34m" reset="\e[m" checked="\uf631" unchecked="\uf630" local sessions=($(tmux list-sessions -F "#S" 2>/dev/null)) ghq list | sort | while read -r repo; do session="${repo//[:. ]/-}" color="$blue" icon="$unchecked" if (( ${+sessions[(r)$session]} )); then color="$green" icon="$checked" fi printf "$color$icon %s$reset\n" "$repo" done } # Gitãªãã¸ããªãFZFã§é¸æãã widget::ghq::select() { local root="$(ghq root)" widget::ghq::source | fzf --exit-0 --ansi --preview="fzf-preview-git ${(q)root}/{+2}" --preview-window="right:60%" | cut -d' ' -f2- } # FZFã§é¸æãããGitãªãã¸ããªã«Tmuxã»ãã·ã§ã³ãç«ã¦ã widget::ghq::session() { local selected="$(widget::ghq::select)" if [ -z "$selected" ]; then return fi local repo_dir="$(ghq list --exact --full-path "$selected")" local session_name="${selected//[:. ]/-}" if [ -z "$TMUX" ]; then # Tmuxã®å¤ã«ããå ´åã¯ã»ãã·ã§ã³ã«ã¢ã¿ãããã BUFFER="tmux new-session -A -s ${(q)session_name} -c ${(q)repo_dir}" zle accept-line elif [ "$(tmux display-message -p "#S")" = "$session_name" ] && [ "$PWD" != "$repo_dir" ]; then # 鏿ãããGitãªãã¸ããªã®ã»ãã·ã§ã³ã«ãã§ã«ã¢ã¿ãããã¦ããå ´åã¯Gitãªãã¸ããªã®ã«ã¼ããã£ã¬ã¯ããªã«ç§»åãã BUFFER="cd ${(q)repo_dir}" zle accept-line else # å¥ã®Tmuxã»ãã·ã§ã³ã«ããå ´åã¯ã»ãã·ã§ã³ãåãæ¿ãã tmux new-session -d -s "$session_name" -c "$repo_dir" 2>/dev/null tmux switch-client -t "$session_name" fi zle -R -c # refresh screen } zle -N widget::ghq::session # C-g ã§å¼ã³åºããããã«ãã bindkey "^G" widget::ghq::session
ãã®ZLEã¦ã£ã¸ã§ããã¯ãghqã§ç®¡çããã¦ããGitãªãã¸ããªãFZFãç¨ãã¦é¸æãã
- Gitãªãã¸ããªã«å¯¾å¿ããTmuxã»ãã·ã§ã³ãåå¨ããªãå ´åã¯æ°ããã»ãã·ã§ã³ãèµ·åããã¢ã¿ãããã
- Gitãªãã¸ããªã«å¯¾å¿ããTmuxã»ãã·ã§ã³ãåå¨ããå ´åã¯ãã®ã»ãã·ã§ã³ã«ã¢ã¿ãããã
- ãã§ã«Gitãªãã¸ããªã«å¯¾å¿ããTmuxã»ãã·ã§ã³ã«ã¢ã¿ãããã¦ããå ´åã¯Gitãªãã¸ããªã®ã«ã¼ããã£ã¬ã¯ããªã«ç§»åãã
ã¨ããåä½ãè¡ãã¾ãã

ä¸å³ã®ç·è²ã®è¡ã¯Gitãªãã¸ããªã«å¯¾å¿ããTmuxã»ãã·ã§ã³ããã§ã«ç«ã¡ä¸ãã£ã¦ãããã¨ã表ãã¦ãã¾ãã
[ãªã¹ã¹ã¡] lazygitãå¼ã³åºããã¼ãã¤ã³ããè¨å®ãã
jesseduffield/lazygit ã¯TUIã®Gitã¯ã©ã¤ã¢ã³ãã§ãCLIããã°ã©ãã£ã«ã«ã«Gitãæä½ã§ãã¾ãã é¡ä¼¼ã®ãã¼ã«ã«tigãgituiãããã¾ãããããã©ã«ãã®ã¬ã¤ã¢ã¦ãããã¼ãã¤ã³ãã£ã³ã°ã好ã¿ãªããlazygitã主ã«å©ç¨ãã¦ãã¾ãã
以ä¸ã®ããã«Tmuxã®ãã¼ãã¤ã³ãã£ã³ã°ãè¨å®ãããã¨ã§ãTmuxã®popup windowãç¨ãã¦ä»»æã®æä½ä¸ã«lazygitãå¼ã³åºããããã«ãã¦ãã¾ãã
# $XDG_CONFIG_HOME/tmux/tmux.conf bind g popup -w90% -h90% -E lazygit # (prefix) gã§lazygitãèµ·åãã

popup windowãç¨ãããã¨ã§ãTmuxã®ãã¤ã³ãåå²ãã¦ããå ´åã§ãå ¨ç»é¢ã«è¿ããµã¤ãºã§lazygitãèµ·åã§ãã¾ãã ã¾ããæéã®ãããã³ãã³ããå®è¡ãã¦ããæä¸ã«ææ©ããã¡ã¤ã«ã®ã¹ãã¼ã¸ã³ã°ãã³ããããªã©ã®æä½ãè¡ããã¨ãã§ãããããé常ã«éå®ãã¦ãã¾ãã
macç·¨
[ãªã¹ã¹ã¡] macOSã®è¨å®ã defaults ã³ãã³ãã§ã³ã¼ãã¨ãã¦ç®¡çãã
macOSã§ã¯ defaults ã³ãã³ããç¨ãã¦ä¸é¨ã®è¨å®ãã³ã¼ãã¨ãã¦ç®¡çã§ãã¾ãã
è¨å®ãGit管çãããã¨ã§ãç°ãªãmacOSãã·ã³éã®è¨å®ã®å·®ç°ãå°ããã§ãã¾ãã
# ã»ããã¢ããã¹ã¯ãªãã # Dock defaults write com.apple.dock orientation right defaults write com.apple.dock autohide -bool false defaults write com.apple.dock tilesize -int 50 defaults write com.apple.dock magnification -bool false defaults write com.apple.dock show-recents -bool false # Mission Control defaults write com.apple.dock wvous-br-corner -int 4 # ç»é¢å³ä¸ã«ã«ã¼ã½ã«ãç§»åããã¨ãã¹ã¯ãããã表示ãã defaults write com.apple.dock mru-spaces -bool false # ã¯ã¼ã¯ã¹ãã¼ã¹ã®é åºãMRUã«ããªã killall Dock
defaults ã³ãã³ãã使ç¨ãã¦è¨å®ãæ´æ°ããä¾
[ãªã¹ã¹ã¡] ã¹ããããå ¥åãã¼ã«ã使ç¨ãã
æ¥åã»è¶£å³ã«éãããåãããã¹ããé »ç¹ã«å ¥åããªããã°ãªããªãå ´é¢ã¯å¤æ°åå¨ãã¾ãã ä¾ãã°ã¦ã¼ã¶IDãã¡ã¼ã«ã¢ãã¬ã¹ã¯æ¥å¸¸çã«å ¥åããæ©ä¼ãããã§ãããã
ãã®ãããªæååã®å ¥åã«ã¯ã¹ããããå ¥åãã¼ã«ã使ç¨ããã¨è¯ãã§ããã *9ã çè ã®å ´åãæ¥åã§ä½¿ç¨ãã¦ããmacOSã§ã¯Dashã®ã¹ããããæ©è½ããè¶£å³ã®macOSã«ã¯Espansoã使ç¨ãã¦ãã¾ãã
ã¹ãããã ããã¹ã -------- ---------------------- ;id NagayamaRyoga ;mail [email protected] ;gh github.com ;m3id ryoga-nagayama ;oha ãã¯ãããããã¾ã ;owa çµããã¾ãããç²ããã¾ã§ãã ;review U4ã³ã¼ãã¬ãã¥ã¼æ å½
ãã®ä»
[ãã ãã] ãã¼ã ãã£ã¬ã¯ããªã®æé¤
åç¯ã¾ã§ã§XDG Base Directory Specificationã«å¾ãããã«.zshrc, .gitconfig, .tmux.confãªã©ã®ãã¡ã¤ã«ããã¼ã ãã£ã¬ã¯ããªããç§»åãã¦ãã¾ããã
çè ã¯ãã¼ã ãã£ã¬ã¯ããªã«ç½®ããããã¡ã¤ã«ã®æ°ã¯å°ãªããã°å°ãªãã»ã©ããã¨èãã¦ãã¾ã*11ã ã¨ããããã§ã以ä¸ã§ã¯ãã¼ã ãã£ã¬ã¯ããªã«ä½æããããã¡ã¤ã«ãæé¤ãã¦ããã¾ãã
~/.zsh_history
.zsh_history 㯠HISTFILE ç°å¢å¤æ°ã§ä¿åå
ã夿´ã§ãã¾ãã
# $ZDOTDIR/.zshrc export HISTFILE="$XDG_STATE_HOME/zsh_history"
XDG_STATE_HOME (~/.local/state) ã¯è¿å¹´XDG Base Directory Specificationã«è¿½å ããããã£ã¬ã¯ããªã§ããã°ããã¹ããªã¼ãã¡ã¤ã«ãä¿åããã®ã«é©ãããã£ã¬ã¯ããªã§ãã
specifications.freedesktop.org
~/.node_repl_history, ~/.sqlite_history, ~/.mysql_history, ~/.psql_history
ãããã¯ãããã NODE_REPL_HISTORY, SQLITE_HISTORY, MYSQL_HISTORY, PSQL_HISTORY ç°å¢å¤æ°ãè¨å®ãããã¨ã§ä¿åå
ã夿´ã§ãã¾ãã
# $ZDOTDIR/.zshrc.lazy export NODE_REPL_HISTORY="$XDG_STATE_HOME/node_history" export SQLITE_HISTORY="$XDG_STATE_HOME/sqlite_history" export MYSQL_HISTFILE="$XDG_STATE_HOME/mysql_history" export PSQL_HISTORY="$XDG_STATE_HOME/psql_history"
~/.irb_history
.irb_history 㯠IRBRC ç°å¢å¤æ°ã§æå®ãããè¨å®ãã¡ã¤ã«å
ã§ä¿åå
ã夿´ã§ãã¾ãã
# $ZDOTDIR/.zshrc.lazy export IRBRC="$XDG_CONFIG_HOME/irb/irbrc"
# $IRBRC xdg_state_home = ENV['XDG_STATE_HOME'] || "#{ENV['HOME']}/.local/state" IRB.conf[:HISTORY_FILE] = "#{xdg_state_home}/irb_history"
~/go
Goã®ä½æ¥ãã£ã¬ã¯ããªã¯ GOPATH ç°å¢å¤æ°ã§å¤æ´ã§ãã¾ãã
# $ZDOTDIR/.zshrc.lazy export GOPATH="$XDG_DATA_HOME/go"
ããã§æããã½ããã¦ã§ã¢ä»¥å¤ã«ã¤ãã¦ãArchWikiã®ãµãã¼ãã»ã¯ã·ã§ã³ã«XDG Base Directory Specificationã®ãµãã¼ãç¶æ³ããéæºæ ã®ãã®ã«ãããåé¿æ¹æ³ãªã©ãã¾ã¨ãããã¦ãã¾ãã
ã¾ã¨ã
çè ã®dotfilesããã¨ã«ããªã¹ã¹ã¡ã®è¨å®ããã ããã«ã¤ãã¦ç´¹ä»ãã¾ããã ä»å¾ãã®ãããªãã ããã«ã¤ãã¦èªãè¨äºãå¢ãã¦ãããã¨å¬ããã§ãã
We are hiring!
ã¨ã ã¹ãªã¼ã§ã¯å¼·ããã ãããæã£ãã¨ã³ã¸ãã¢ãåéãã¦ãã¾ãã èå³ãæãããæ¹ã¯ä¸è¨ãããåãåãããã ããã
*1:çè ã® dotfiles 㯠macOS ããã³ Ubuntu 20.04 (on WSL2) ãåæã¨ãã¦ãã¾ãããCLIã«é¢ãã大åã®é ç®ã¯ä»ã®ç°å¢ã§ãé©ç¨ã§ããã¯ãã§ãã
*2:https://github.com/z-shell/zi/discussions/138
*3:ç¾å¨ã§ã¯fish shellãGitãNeovimãã¯ããã¨ããæ§ã ãªã½ããã¦ã§ã¢ãXDG Base Specificationã«æºæ ãã¦ãã¾ãã
*4:ç§ã¯cli/cliãªã©ã®Zshãã©ã°ã¤ã³ã§ã¯ãªãããã¤ãã®CLIãã¼ã«ãZinitãç¨ãã¦ã¤ã³ã¹ãã¼ã«ãã¦ãã¾ããããã¯ãHomebrewãªã©ã®ããã±ã¼ã¸ããã¼ã¸ã£ãçµç±ããGitHub Releasesãããã¤ããªãç´æ¥ãã¦ã³ãã¼ããããã¨ã§OSéã®å·®åãå°ãªãã§ããããã§ãã
*5:æ§ã ãªdotfilesãè¦ã㨠alias gs='git status' ãªã©ã®Gitãµãã³ãã³ããaliasã«ç»é²ãã¦ããã®ãããè¦ããã¾ãããGhost Script (gs) ãã¯ããã¨ããã³ãã³ãã¨è¡çªãããããã¾ã好ã¿ã§ã¯ããã¾ããã
*6:FZFãç¨ããè£å®ãå®ç¾ãã¦ããZshãã©ã°ã¤ã³ã¨ã㦠chitoku-k/fzf-zsh-completions ãªã©ãããã¾ãããzeno.zshã¯YAMLãç¨ãã¦ä»»æã®ã³ãã³ãã«å¯¾ããè£å®ãè¨è¿°ã§ããã¨ããç¹ã§ããã«ã¹ã¿ãã¤ãºæ§ã«åªãã¦ãã¾ãã
*7:Zshã® setopt AUTO_CD ã使ãæãããã¾ããã好ã¿ã®åé¡ã§æå¹åãã¦ãã¾ããã
*8:æ£ç¢ºã«ã¯Subversionãªã©ã®Git以å¤ã®VCSã«ã対å¿ãã¦ãã¾ãã
*9:ã¹ããããå ¥åãã¼ã«ã«ãã¹ã¯ã¼ããç»é²ããã®ã¯é¿ãã¾ãããã
*10:"U4ã³ã¼ãã¬ãã¥ã¼æ å½"ã¨ããã®ã¯Slackä¸ã§ã³ã¼ãã¬ãã¥ã¼æ å½è ãå²ãå½ã¦ãããã®ã«ã¹ã¿ã ã¬ã¹ãã³ã¹ã®ããªã¬ã¼ã§ã(åè)ã
*11:ãã¼ã ãã£ã¬ã¯ããªã¯ããã°é¨å±ã«ãããåºé¢ã§ããç©ãæ£ãããã®ã§ããã°æ£ã®ä¸ãæºã®ä¸ããµããããã§ãããã