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

一文字エイリアスのすすめ

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 一文字エイリアスのすすめ

Avatar for Fujimura Daisuke

Fujimura Daisuke

May 10, 2024
Tweet

More Decks by Fujimura Daisuke

Other Decks in Programming

Transcript

  1. 自己紹介 - お仕事 2 時期 2008~2012 2013~ 2015~ 2020~ 会社

    いろいろ Quipper マチマチ STORES バックエンド Rails Rails Rails Rails, Go, etc. フロントエンド jQuery, Backbone.js etc. Backbone.js etc. React.js React.js, Vue.js 立場 ほぼメンバー いわゆるEM CTO CTO 藤村大介 twitter.com/ffu_ github.com/fujimura note.com/fujimuradaisuke
  2. 自己紹介 - 書いたり発表したもの 3 Rails Developer Meetup 2019 入門 名前

    WEB+DB PRESSの特集のダイジェスト版 https://speakerdeck.com/fujimura/ru-men-ming-qian WEB+DB PRESS Vol.110 特集 名前付け大全 「よい命名とは」をガチで考えてみたやつ https://gihyo.jp/magazine/wdpress/archive/2019/vol110
  3. 自己紹介 - 作品 5 Haskellのプロジェクト生成ツール $ bundle gem みたいなやつ。当 時いいツールがなかったので作った

    git-grepの結果で置換とリネーム $ git grep | xargs sed -i s/foo/bar/ が面倒なので作った rspec-railsのHaskell版 正確にはRackにあたる層のためのも の。無かったので作った
  4. 6

  5. 塵も積もれば… 9 ものすごくざっくりと打鍵数を推定してみます。 コマンド 文字数 年間平日日数 一日の回数 年間打鍵数 git status

    10 250 30 75000 git diff 8 250 20 40000 git checkout master 19 250 5 23750 cd /path/to/repo 16 250 10 40000 vim foo/bar.ts 14 250 30 105000 283750 約28万打鍵!もったいね〜〜!!! よく使うコマンドの実行は、できるだけ短くしたい!!
  6. v 12 v () { if [ -z $1 ]

    then local choice=$(fzf) if [ -z $choice ] then else local cmd="v $choice" print -S $cmd eval $cmd fi else nvim $@ fi } 本当はもう少し手が込んでいます。
  7. v 14 なお .gitconfig にあるコマンドのエイリアスも一文字のものが多いので、僕 のターミナルの履歴は g l とか g

    g ...とかがたくさんある [alias] s = status -bs d = diff l = log --decorate f = fetch g = grep --line-number --show-function --color --heading --break
  8. s 15 alias s='git s' ターミナルのプロンプトで毎回 git status を出す、つまり何かコマンドを実 行するたびに

    git status を出す設定にしたこともありますが、シンプルに見 づらかったのでこれはやめました。 コードを書いているとメチャクチャ良く見る git status。しかし git statusと打つの面倒、 g status も面倒、 g s ですら面倒なので sにしまし た。
  9. m 17 m () { local main_branch=$(git symbolic-ref refs/remotes/origin/HEAD |

    sed 's@^refs/remotes/origin/@@') git checkout $main_branch } git checkout master も打つ頻度高くね?ということで一文字に。これも 非常に便利。なお main ブランチの場合もあるので一工夫しています。
  10. r 18 ローカルリポジトリの移動も面倒だな…ということで一文字に。なおローカル リポジトリの管理はx-motemen/ghqでしています。 - r $REPO_NAME でローカルリポジトリに移動 - 引数なしの

    r でfzfを使ってローカルリポジトリを選択し移動 - r $URL で $URLにあるリモートリポジトリをghqでクローン とローカルリポジトリへの移動・追加を簡単にしました。便利!
  11. r 19 function repo(){ local result="" local choice="" local dest=""

    if [ -z $1 ]; then choice=$(ghq list --unique | fzf) if [ -z $choice ]; then echo "No repo was chosen" else result=$choice fi else result=$1 fi dest=`ghq list --exact --full-path $result` if [ "$dest" == "" ] ; then if [ "$1" =~ "^(git|http)" ] ; then ghq get $1 return else echo "Not found" fi else cd $dest fi } alias r='repo' 実装はこうなっています。
  12. r 20 function _repo { _values $(ghq list --unique) }

    compdef _repo repo なお、.zshrc に以下を追加すると補完も効きます。
  13. 一文字エイリアス紹介おわり 22 名前 実行されるもの v vim(nvim) g git s git

    status d git diff m git checkout master r 自作のリポジトリ移動コマンド 実際のコードは https://github.com/fujimura/dotfiles にあります。
  14. 効用1: 打鍵量を最小化することで開発効率が上がる 24 • 単純な生産性 ◦ 同じことをやるなら、より少ない手順でやったほうが時間あたりの生 産性は高い • 脳内のコードを逃さない

    ◦ コマンドを打っている間に脳内にあるコードが逃げていく感覚、あり ませんか? ◦ 脳内のコードをコミットのエンコードするときの障害を最小にするべ く、コマンドを最短にすべし