.tmux.confをめちゃくちゃにシンプルにした

もしかしてtmuxなくても生きていけるんじゃないか?って一瞬思ったけどめっちゃ使ってて無理だった、おしいところまできてる気がするんだけど必要だった。

  • rails s
  • docker-compose up
  • vim
  • guard
  • tig
  • tail -f log/development.log
  • todo.txt
  • 一時的にssh
  • 一時的にトンネリング
  • 一時的になんかしらのサーバー設定
  • 他のプロジェクトにcd $(ghq list -p | fzf)

tmuxinatorはプロジェクトごとに設定ファイルを作るのが面倒になって汎用的な設定ファイルをひとつ作って運用してたけど大して効率よくなったようにも思えず辞めた。

なんらかのtmuxの紹介記事見て.tmux.conf真似して作ってみたりしてたけど使ってないのも多い、これとか最初に試してみたけどそれから使ったことない笑

bind -r C-h resize-pane -L 5
bind -r C-j resize-pane -D 5
bind -r C-k resize-pane -U 5
bind -r C-l resize-pane -R 5

あとreattach-user-namespaceとかpbcopyのあたりとかがtmux2.xのどこかの時点でいらなくなったとかなんとかあったけどそもそも最近は普通にMacBookトラックパッドがんがん使ってコピーしてるからいらない。

俺はキーボードしか使わないぜ、マウスを使うなんて邪道だ、ターミナルの真の力をみせてやる、生産性ガーとかアホくさくてどうでもよくなった。

あとmacubuntuがとかも気にせずにすむようになった、もうどうせならVSCodeに移行したいんだけど開発サーバーがubuntuでそこにSSHして開発するとなると使えないからどうすればいいんだという感じ。

MacOSでdocker-composeで開発すればいいじゃん何いってんのなんだけどdockerが別物なのでなんかしら具合の悪いことが起きてなんだかんだと面倒なのでubuntuでdocker-composeしてる。

copy-mode-viは必要、ログとかfindとかrspecとかなんでもいいけど出力が多かったりすると遡りたいときがどうしてもある。

間違ってターミナル落としてしまってもsshしてtmux attachすればすぐに元通りなのがよい。

あとはvimとguardを縦分割してguard-rspecですぐ結果見れるようにしてたけどそれも辞めてvimのQuickRunでrspec実行してるけどテストされる側のコードにいるときにQuickRunできなくてguardに戻したほうがよさそう。

これが

set-option -g prefix C-t
unbind-key C-b

# bind C-r source-file ~/.tmux.conf

unbind C-t
bind-key C-t copy-mode

# set-option -g status-bg colour7
# set-option -g status-fg black
# set-window-option -g window-status-current-fg white
# set-window-option -g window-status-current-bg colour14
# set-window-option -g window-status-current-attr bold#,underscore

# # status
# set -g status-fg white
# set -g status-bg black
# set -g status-left-length 30
# set -g status-left '#[fg=white,bg=black]#H#[fg=white]:#[fg=white][#S#[fg=white]][#[default]'
# set -g status-right '#[fg=black,bg=white,bold] [%Y-%m-%d(%a) %H:%M]#[default]'
# setw -g window-status-current-fg black
# setw -g window-status-current-bg white
# setw -g window-status-current-attr bold#,underscore
# set -g pane-active-border-fg black
# set -g pane-active-border-bg white


# bind C-s split-window -v
# bind C-v split-window -h

# bind C-h select-pane -L
# bind C-j select-pane -D
# bind C-k select-pane -U
# bind C-l select-pane -R
# bind C-n next-window
# bind C-p previous-window
# bind C-o select-pane -t :.+
# bind C-m resize-pane -Z

# bind -r C-h resize-pane -L 5
# bind -r C-j resize-pane -D 5
# bind -r C-k resize-pane -U 5
# bind -r C-l resize-pane -R 5

set-window-option -g mode-keys vi
# bind-key -T copy-mode-vi v send-keys -X begin-selection
# bind-key -T copy-mode-vi y send-keys -X copy-pipe "pbcopy"
# unbind   -T copy-mode-vi Enter
# bind-key -T copy-mode-vi Enter send-keys -X copy-pipe "pbcopy"


# # for nvim
# set-option -sg escape-time 10
# set-option -g default-terminal "screen-256color"

こうなった

set-option -g prefix C-t
unbind-key C-b

unbind C-t
bind-key C-t copy-mode
set-window-option -g mode-keys vi
set -g history-limit 100000

結果、やせっぽちの.tmux.confになった、極端に減らしすぎたかもしれないけど必要十分だと思ってる、いまのところ笑

My tmux Configuration File https://gist.github.com/TheCedarPrince/07f6f8f79b1451ec436ff8dee236ccdd

gistにあるどなたかの.tmux.confなんだけどtmux package managerいれて便利機能足したりしてるのいいよね。

tmux-sensibleいれるとnext-windowがprefix C-nに勝手になってくれるらしい、ほかにもおまかせがいい感じになってるっぽいので好きな人は入れたらいいと思う。

rothgar/awesome-tmux: A list of awesome resources for tmux https://github.com/rothgar/awesome-tmux

awesome tmuxにはテーマとかステータスバーとかイケてそうなプラグインのtmux-bitwardenとかtmux-spotifyとか紹介されてるけど別にいいかという感じ。

スクリプト書けばいくらでもこういうことはできるんだろうけどtmuxにはtmuxにしかできないセッション、ウィンドウ、ペインの管理ができれば十分だ。

追記:減らしすぎてnext-windowのもともとの手癖が修正できそうにないのとvimが無色になってたのを対応したけど簡略化の路線変更はなし

set-option -g prefix C-t
unbind-key C-b

unbind C-t
bind-key C-t copy-mode

bind C-n next-window
bind C-p previous-window

set-window-option -g mode-keys vi
set -g history-limit 100000

# tmux 上で Vim を True Color (24 bit color) で使う - Qiita https://qiita.com/yami_beta/items/ef535d3458addd2e8fbb
set -g default-terminal "screen-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"

追記:やっぱりtmux-sensible便利そうだったので追加してみた、history-limit 50000で必要十分だったりnext-windowがC-nになってたりdefault-terminal "screen-256color"だったりするので便利、あとはprefix変更したりmode-keys viにしたりすればいままでのとおりになったのでいい感じや。

昔、rails is omakaseってDHHが寿司屋に例えて言ってたけど適切なデフォルトが設定されてなければプラグインで提供するっていうその姿勢がすごくいい、tmux-sensibleは素晴らしい。

manみて設定して時間使って俺の理想ガーってやらなくていいのは多くの人達の時間を節約できてるのでばしばし布教すべき、みんなにとって必要十分なデフォルトになってないtmuxがおかしいのかもしれない。

ユニクロのようにカラバリがあることはよくもあるけど悪い面もある、いろいろ設定できるけどこういう風に使ってるしみんな同じように使うと幸せになれると思うよっていうデフォルトというかこう使って貰えばみんな幸せだろう、そうに決まってるっていうくらい洗練されてるプロダクトはただただコードを書いて様々な選択肢を提示するのではなくてアンケート取ったのかわからないけどこうあるべきでしょ?って提示してくれるのはある意味感動すら覚えるよね、そうそういろいろ設定してみたんだけどそれが欲しかったんだ、ありがとうって。

iPhoneなんかそういう感じでなんでもできます、多様性も認めます、といいつつもベストプラクティスがある製品はプロダクトマネージメントできてるしユーザーに不要な不快感を与えてなくてよい、ラストワンマイルのツメの甘さはどうやったらうまるんだろう、いつも思うし自分が作ってるプロダクトもそうなんだろうけど当てはまるキーワードはいつも「もったいない」だと思う。

よいとはいうものの、スマホはコンテンツの消費しかできないっていうなんかの記事のブクマコメントみてたしかにそのとおりで質の高いコンテンツを作ってるひとは例外なくパソコンを使っているという事実にも注目したいところ。

# First of all, to install tpm (git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm) and execute tmux and prefix + I to install tpm libraries. 
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
run '~/.tmux/plugins/tpm/tpm'

unbind-key C-b
set-option -g prefix C-t
unbind C-t
bind-key C-t copy-mode
set-window-option -g mode-keys vi

# set-option -g prefix C-t
# unbind-key C-b
#
# unbind C-t
# bind-key C-t copy-mode
#
# bind C-n next-window
# bind C-p previous-window
#
# set-window-option -g mode-keys vi
# set -g history-limit 100000
#
# # tmux 上で Vim を True Color (24 bit color) で使う - Qiita https://qiita.com/yami_beta/items/ef535d3458addd2e8fbb
# set -g default-terminal "screen-256color"
# set-option -ga terminal-overrides ",xterm-256color:Tc"