Slide 1

Slide 1 text

1文字エイリアスのすゝめ id:onk 2024-08-24 Kyoto.なんか 1

Slide 2

Slide 2 text

● 大仲 能史 a.k.a. id:onk ● 芸歴20年目 ● 株式会社はてな ○ チーフエンジニア ○ Mackerel 開発チーム 自己紹介 2

Slide 3

Slide 3 text

3 今日の話

Slide 4

Slide 4 text

4 1文字エイリアス 使っている人 ノシ

Slide 5

Slide 5 text

1文字エイリアス ● alias s="git status -sb" ● 13文字 -> 1文字 ○ 13倍の生産性!!! 5

Slide 6

Slide 6 text

1文字エイリアス ● Q: 実際はEnterも押すから7倍では? ○ Enterを押すだけで動くようにしてある(デモ ● Enter で ls と git status を表示すると便利 6

Slide 7

Slide 7 text

historyを集計する ● zshにはhistory機能がある ● head ~/.zsh_history 7

Slide 8

Slide 8 text

head ~/.zsh_history 8 : 1522742171:0;brew update : 1522742190:0;brew upgrade : 1522742201:0;brew search ghq : 1522742205:0;brew install ghq : 1522742215:0;ls -apl : 1522742221:0;byobu : 1522742271:0;byobu : 1522742277:0;exit : 1522742279:0;cd dotfiles : 1522742283:0;exit

Slide 9

Slide 9 text

head ~/.zsh_history 9 : 1522742171:0;brew update : 1522742190:0;brew upgrade : 1522742201:0;brew search ghq : 1522742205:0;brew install ghq : 1522742215:0;ls -apl : 1522742221:0;byobu : 1522742271:0;byobu : 1522742277:0;exit : 1522742279:0;cd dotfiles : 1522742283:0;exit Time.at 1522742171 => 2018-04-03 16:56:11 +0900

Slide 10

Slide 10 text

history 10 $ history | tail -n 3 624392 cd memo 624393 s 624394 v

Slide 11

Slide 11 text

historyを集計する 11 $ history 1 | awk '{ print $2 }' | sort | uniq -c | sort -nr | head

Slide 12

Slide 12 text

historyを集計する 12 141945 g 136083 s 67635 v 41072 cd 28606 rg 26105 tig 16898 t 12128 plenv 9685 :q 7998 ll

Slide 13

Slide 13 text

ちなみに以下の略 ● g=git ● s=git status -sb ● function v() {vi -p ${${=*/:/ +}/:*}} ● t=tig ● :q=exit ● ll=ls -lFG 13

Slide 14

Slide 14 text

ちなみに以下の略 14 ● function v() {vi -p ${${=*/:/ +}/:*}} ○ vi -p で全部タブで開く ■ bufferよりタブ派 ○ s/:/ +/ みたいなヤツ ■ v README.md:100 で100行目を開きたい ■ vim README.md +100 ■ grep -n で出てくる形式に合わせて、コピペで該当行に飛べ るように

Slide 15

Slide 15 text

ちなみに以下の略 15 ● :q=exit ○ vim派なので使っていたが ○ 最近は Ctrl+D で閉じるようになったので使ってない

Slide 16

Slide 16 text

● ll=ls -lFG ○ -l はいつもの ○ -F はディレクトリだとスラッシュが付くとか ○ -G は色付け ○ 今は l 1文字にエイリアスしている ちなみに以下の略 16

Slide 17

Slide 17 text

17 g=git

Slide 18

Slide 18 text

18 gitって サブコマンドあるよね

Slide 19

Slide 19 text

historyを集計する 19 $ history 1 | awk '{ print $2,$3 }' | grep "^g " | sort | uniq -c | sort -nr | head

Slide 20

Slide 20 text

historyを集計する 20 24054 g a 16190 g ci 12911 g ds 12303 g co 9046 g f 6665 g ap 5904 g switch 5844 g fix 5311 g b 5180 g r

Slide 21

Slide 21 text

● g a=git add ● 2万回も叩いているなら1文字エイリアスに昇 格すると良いのでは??? ○ alias a="git add" まだまだ最適化できる 21

Slide 22

Slide 22 text

● g ds=git diff --staged -b ● 1万回も叩いているなら1文字エイリアスに昇 格すると良いのでは?? ○ alias d="git diff --staged -b" ○ もともとalias d=dockerだったけど、より回数が多い 方を優先したいので徴収 まだまだ最適化できる 22

Slide 23

Slide 23 text

● git switch -d remotes/origin/HEAD ○ remotes/origin ■ ローカルでmainブランチは不要なのでremotesを直接見る ○ main/masterが面倒ですよね ■ git symbolic-ref refs/remotes/origin/HEAD ■ デフォルトブランチが取れる! ● をmに割り当てている gitのオススメ 23

Slide 24

Slide 24 text

というわけでやっていくぞ ● 俺たちの手癖はまだまだ最適化できる ● 使用頻度に合わせて最適化するのがオススメ ○ 単純に生産性が上がる ○ 文字数が少ないのは正義 ● ハフマン符号化 24

Slide 25

Slide 25 text

想定質問 ● 他人のPCで困らない? ○ 手癖がオプションを覚えてないので多少は困る ○ aliasを作るときにしっかりオプション調べるので、 存在は覚えている=1回help見たら分かるので大丈夫 25

Slide 26

Slide 26 text

想定質問 ● fishのabbrの方が ○ 履歴を取って、最適化ループを回したい ○ abbrはhistoryに「どう入力したか」は残らない 26