Help us understand the problem. What is going on with this article?

tmuxで開発効率アップ 基本のまとめ

20180226181047.png

背景

エディタを開きながらログを見たりコマンド実行して見たりする際に便利だったtmuxのチートシート的な記事
リソース管理/ログ/コマンド操作を一つのターミナルで操作できるようになります。

tmuxとは

ターミナルマルチプレクサと呼ばれるソフトウェアの一つ。1つのターミナルで複数の作業領域を簡単に操作できるようになる。
似てようなソフトウェアとしてGNU Screenがある。

GitHubでソースは公開されている。
tmux/tmux

tmux用語

tmuxを使う際に独自の用語が何個かある。
よく出てくるのは下記

用語 概要
window ペインの管理単位
pane ウィンドウの中に複数持つことのできる領域
session ウィンドウを管理する単位
server/client サーバがすべてのセッションを管理

環境

$ cat /etc/*-release | head -2
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.10

$ uname -r
4.18.0-10-generic

$ tmux -V
tmux 2.7

コマンド

ここでの書いているのは基本中の基本操作。
使う上ではすべて必須の操作となりますので是非覚えてしまおう。

コマンド 説明
Ctrl-b + ? ショートカット一覧
Ctrl-b + d デタッチ
Ctrl-b + w ウィンドウ一覧
Ctrl-b + c ウィンドウ生成
Ctrl-b + n 次のウィンドウへ
Ctrl-b + p 前のウィンドウへ
Ctrl-b + : コマンドモードへ
Ctrl-b + [ コピーモード開始
Ctrl-b + Ctrl-Space コピーモードでのコピー開始
Ctrl-b + ESC-w コピーモードでのコピー終了
Ctrl-b + ] コピーデータの貼付け
Ctrl-b + q ペインのインジケータを表示
Ctrl-b + t 時計表示
Ctrl-b + % ウィンドウを左右ペインへ分割
Ctrl-b + " ウィンドウを上下ペインへ分割
Ctrl-b + o アクティブなペインの移動(次のペインへ移動)
Ctrl-b + x ペインの破棄
Ctrl-b + Space ペインレイアウトの変更(左右、上下)
Ctrl-b : resize-pane -U 数字 上部ペインのサイズ変更
Ctrl-b : resize-pane -D 数字 下部ペインのサイズ変更
Ctrl-b : resize-pane -L 数字 左ペインのサイズ変更
Ctrl-b : resize-pane -R 数字 右ペインのサイズ変更

設定ファイルを書いておこう

オプションだったりキーバインドの変更をコマンド実行でも変更できるがtmuxを終了すると元に戻ってします。
そこでいつものdotfileを作成して起動するたびに読み込まれるようにします。

以下は私が使っている設定ファイルです。
GitHubでも公開しています。
https://github.com/ryuichi1208/dotfiles

キーバインドやショートカットは好みが大変わかれる箇所なのでいろいろと考察も必要そう
https://qiita.com/hnw/items/02113da3476f29df768b
何を何へ割り当てるといいかなんかはホントに好みが分かれますが。。。

~/.tmux.conf
# set prefix to C-a
set -g prefix C-a

# reset C-b as prefix key
unbind C-b

# decrease key stroke delay
set -sg escape-time 1

# reload .tmux.conf
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# split vertically
bind \ split-window -h

# split horizontally
bind - split-window -v

# move pane
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

# resize pane
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

# enable mouse
setw -g mouse on

# 256-color
set -g default-terminal "screen-256color"

# status bar
set -g status-interval 60
setw -g monitor-activity on
set -g visual-activity on

# copy mode
setw -g mode-keys vi
set-option -g default-command "exec reattach-to-user-namespace -l $SHELL"
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"

# sync
set-option -g synchronize-panes off
bind e setw synchronize-panes on
bind E setw synchronize-panes off

## set status bar
set -g status-bg default
setw -g window-status-current-bg "#282a2e"
setw -g window-status-current-fg "#81a2be"

## highlight active window
setw -g window-style 'bg=#282a2e'
setw -g window-active-style 'bg=#1d1f21'
setw -g pane-active-border-style ''

## highlight activity in status bar
setw -g window-status-activity-fg "#8abeb7"
setw -g window-status-activity-bg "#1d1f21"

## pane border and colors
set -g pane-active-border-bg default
set -g pane-active-border-fg "#373b41"
set -g pane-border-bg default
set -g pane-border-fg "#373b41"

set -g clock-mode-colour "#81a2be"
set -g clock-mode-style 24

set -g message-bg "#8abeb7"
set -g message-fg "#000000"

set -g message-command-bg "#8abeb7"
set -g message-command-fg "#000000"

# message bar or "prompt"
set -g message-bg "#2d2d2d"
set -g message-fg "#cc99cc"

set -g mode-bg "#1d1f21"
set -g mode-fg "#de935f"

# right side of status bar holds "[host name] (date time)"
set -g status-right-length 100
set -g status-right-fg black
set -g status-right-attr bold
set -g status-right '#[fg=#f99157,bg=#2d2d2d] %H:%M |#[fg=#6699cc] %Y-%m-%d '

# make background window look like white tab
set-window-option -g window-status-bg default
set-window-option -g window-status-fg white
set-window-option -g window-status-attr none
set-window-option -g window-status-format '#[fg=#6699cc,bg=colour235] #I #[fg=#999999,bg=#2d2d2d] #W #[default]'

# make foreground window look like bold yellow foreground tab
set-window-option -g window-status-current-attr none
set-window-option -g window-status-current-format '#[fg=#f99157,bg=#2d2d2d] #I #[fg=#cccccc,bg=#393939] #W #[default]'


# active terminal yellow border, non-active white
set -g pane-border-bg default
set -g pane-border-fg "#999999"
set -g pane-active-border-fg "#f99157"

作業画面

ネットワークの設定したりログを見たりパッケージを入れたりを同一のターミナルでやっている画面

スクリーンショット 2018-12-31 22.02.21.png

まとめ

2018年最後の記事はなんだかんだお世話になっているtmuxのご紹介でした。
ステータスラインだったり、プラグインについても書きたかったが力尽きたので特にしていません。

参考リンク

https://qiita.com/succi0303/items/cb396704493476373edf

ryuichi1208
ITエンジニアっぽい仕事してます。
https://ryuichi1208.hateblo.jp
yyphp
PHPerが毎週集まり、ざっくばらんに情報交換する雑談コミュニティ
https://yyphp.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした