俺の育てたshellを見てくれ……お前のshellはどうだ?教えてくれ[みすてむずアドカレ3 16日目]
私はfish派 お前は何sh?
この記事は みすてむず いず みすきーしすてむず (3) Advent Calendar 2023 16日目の記事です。
カスタマイズもそうなんだけど、どういうふうに shell 使ってるか気になるから私の使い方から書いていこうかな
他のパソコンとの共有は chezmoi でやってる
使い方を毎回わすれる
意味ありげなものはこれくらい
そんなにはゴリゴリカスタマイズしているわけではない
if status is-interactive
function fish_user_key_bindings
bind \cr fzf_history
end
end
source /opt/homebrew/opt/asdf/libexec/asdf.fish
alias wsf fzf_ws
alias g git
alias git-delete-branch 'git branch | fzf --preview "git log --pretty=one {}" | xargs git branch -D'
alias dc docker-compose
alias git-change-branch git\ branch\ \|\ sed\ -e\ \"s/^.\\\"\*\ //g\"\ \|\ fzf\ --preview\ \"git\ log\ --pretty=\'\%h\ -\ \%s\'\ \ \{\}\"\ \|\ xargs\ git\ switch
alias d docker
alias brew-intel 'arch -x86_64 brew'
alias cdf fzf_cd
alias git-pullpullrequest gh\ pr\ list\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ gh\ pr\ checkout
alias git-reset git\ log\ --pretty=\"\%h\ -\ \%s\"\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ git\ reset
alias intel-brew 'arch -x86_64 brew'
alias ws webstorm
alias ghqf fzf_ghq
set -gx VOLTA_HOME "$HOME/.volta"
set -gx PATH "$VOLTA_HOME/bin" $PATH
ws
でwebstormが立ち上がるのは結構体験がよい。
ws /path/to/project # 指定のディレクトリで開く
cd /path/to/project
ws . # カレントディレクトリをWebstormで開く
私の場合は Webstormだけど、 VSCodeなら code を使うことができる。
これ。
M1 Macでこれをよく使う
alias intel-brew 'arch -x86_64 brew'
alias brew-intel 'arch -x86_64 brew'
intel-brew install gcc
とか。 Arm版 brew でinstallできなかったら intel-brew を変わりに使う感じ。
エスケープのせいでえらいことになってるけど、 fzf を使ってインタラクティブにgitを操作しようというあれこれ
alias git-pullpullrequest gh\ pr\ list\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ gh\ pr\ checkout
PullRequestを表示してそこへswitchできる
これはめちゃくちゃ便利。おすすめ。
alias git-change-branch git\ branch\ \|\ sed\ -e\ \"s/^.\\\"\*\ //g\"\ \|\ fzf\ --preview\ \"git\ log\ --pretty=\'\%h\ -\ \%s\'\ \ \{\}\"\ \|\ xargs\ git\ switch
どんなブランチがあるのか見ながらswitchできる
git switch なんか適当にいれてTabで結構補完できることがわかってからはあんまり使わなくなったんだけど、コミットログのプレビューとかあるのでかなり便利
alias git-delete-branch 'git branch | fzf --preview "git log --pretty=one {}" | xargs git branch -D'
alias git-reset git\ log\ --pretty=\"\%h\ -\ \%s\"\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ git\ reset
作ったけど使ってない
実行時間が長いコマンドは doneで音を鳴らす
terminal-notifier に -sender オプションを渡すとなぜか通知が来ないので、インストールしたdoneのスクリプトから-senderオプションを渡す部分を削っている
Zshには zsh-notify がある
プロンプトはそんなにこだわってない
ここから先は shell のカスタマイズの話じゃなくて運用の話
なんかよくわからん差分がたくさんあるのを戻したいとき
git reset HEAD --hard # 最後のコミットに戻る
git reset develop --hard # ローカルのdevelopに戻る
git reset origin/develop --hard # リモートのdevelopに戻る
Untracked なファイルも消したいとき
git clean -fd
特定のファイルだけ develop から取り出したいとき
git checkout develop -- package.json # package.json だけをdevelopのものに戻す
今のブランチに切り替える前のブランチに戻りたいとき
git switch - # 最後にいたブランチに戻る
git add . のかわりに git commit に含められたら便利
git commit -a -m "message" # -a が git add . も一緒にやってくれるオプション
npm run dev とかしたけどポートが被ってる? なんか死にぞこないがいるんじゃないか?
killall node # node で動いてるプロセスが全部死ぬ *サーバー環境でやると死ぬわよ
いやいや、まずは何が動いてるか確認だよ
lsof -i:3000 # port 3000 で動いてるプロセスを教えてくれる。 lsof -i 3000 ではなく lsof -i:3000 でないといけない
プロセスIDがわかったら kill すればよい。
コミットログを一行でざっと表示したいなあ
git log --oneline
なんかディレクトリを finder とかで開きたい
open /path/to/dir
squash merge したブランチはいらないんじゃないか
git-delete-squashed
それぐらいかな。
お前のテクニックも教えてくれ!
(明日は @y_s_1985 さんです!)