-
Notifications
You must be signed in to change notification settings - Fork 0
/
tmux.conf
147 lines (138 loc) · 5.35 KB
/
tmux.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
set -g default-shell /bin/zsh
# [tmuxの基本的な使い方とコマンドのまとめ \- TASK NOTES](http://www.task-notes.com/entry/20150711/1436583600)
# [達人のtmux\.confコピペしたら動かなかった話 \- 魔法使いの卵](http://raichel.hatenablog.com/entry/2015/08/02/185018)
## prefixキーをC-aに変更する
set -g prefix C-a
unbind C-b
## キーストロークのディレイを減らす
set -sg escape-time 1
## ウィンドウのインデックスを1から始める
set -g base-index 1
## ペインのインデックスを1から始める
setw -g pane-base-index 1
## 設定ファイルをリロードする
bind r source-file ~/.tmux.conf \; display "Reloaded!"
## C-a*2でtmux内のプログラムにC-aを送る
bind C-a send-prefix
## kill pane / window
bind x kill-pane
bind X kill-window
bind R respawn-pane -k
## | でペインを縦に分割する
bind | split-window -h
bind -n M-v split-window -h
bind -n M-| split-window -h
## - でペインを横に分割する
bind - split-window -v
bind -n M-s split-window -v
bind -n M-- split-window -v
## Vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
bind -n S-left select-pane -L
bind -n S-down select-pane -D
bind -n S-up select-pane -U
bind -n S-right select-pane -R
## Vimのキーバインドでペインをリサイズする
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
bind -n M-H resize-pane -L 1
bind -n M-J resize-pane -D 1
bind -n M-K resize-pane -U 1
bind -n M-L resize-pane -R 1
## Window
bind -n M-n next-window
bind -n M-p previous-window
## Swap pane
bind-key -n M-q swap-pane -U
bind-key -n M-e swap-pane -D
## "f"ull screen
bind-key -n M-f resize-pane -Z
## マウス操作を有効にする
set -g mouse on
## 256色端末を使用する
#set -g default-terminal "screen-256color"
#set -g default-terminal "xterm"
set -g default-terminal "xterm-256color"
## ステータスバーの色を設定する
set -g status-fg white
set -g status-bg black
## ウィンドウリストの色を設定する
setw -g window-status-style 'fg=cyan bg=default dim'
## アクティブなウィンドウを目立たせる
setw -g window-status-current-style 'fg=white bg=red bright'
## Color
set -g window-style 'fg=colour247 bg=colour236'
set -g window-active-style 'fg=colour250 bg=black'
## ペインボーダーの色を設定する
set -g pane-border-style 'fg=green bg=black'
## アクティブなペインを目立たせる
set -g pane-active-border-style 'fg=white bg=yellow'
## コマンドラインの色を設定する
set -g message-style 'fg=white bg=black bright'
## ステータスバーを設定する
### 左パネルを設定する
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
### 右パネルを設定する
set -g status-right "#[fg=red]#(tmux show-options -g prefix)|#[fg=cyan][%Y-%m-%d(%a) %H:%M]"
### リフレッシュの間隔を設定する(デフォルト 15秒)
set -g status-interval 60
### ウィンドウリストの位置を中心寄せにする
set -g status-justify centre
### ヴィジュアルノーティフィケーションを有効にする
setw -g monitor-activity on
set -g visual-activity on
### ステータスバーを上部に表示する
set -g status-position top
## viのキーバインドを使用する
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
# https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind-key -n C-\\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
bind-key -T copy-mode-vi C-h select-pane -L
bind-key -T copy-mode-vi C-j select-pane -D
bind-key -T copy-mode-vi C-k select-pane -U
bind-key -T copy-mode-vi C-l select-pane -R
bind-key -T copy-mode-vi C-\\ select-pane -l
# tmux_copy to win32yank
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "win32yank.exe -i"
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "win32yank.exe -i"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "win32yank.exe -i"
unbind-key -T prefix v
#bind-key p run "win32yank.exe -o | tmux load-buffer - && tmux paste-buffer"
# My setting
## toggle
bind e setw synchronize-panes
bind m set -g mouse
if-shell "which putclip" '\
bind-key -T vi-copy y copy-pipe "iconv -s -t SJIS | putclip"; \
bind-key -T vi-copy enter copy-pipe "iconv -s -t SJIS | putclip"; \
'
set -g history-limit 10000
###### Plugins
#####set -g @plugin 'tmux-plugins/tpm'
#####set -g @plugin 'tmux-plugins/tmux-sensible'
#####set -g @plugin 'tmux-plugins/tmux-yank'
#####
###### git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
###### Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
#####run '~/.tmux/plugins/tpm/tpm'
bind -n M-C new-session
bind -n M-l switch-client -n
bind -n M-h switch-client -p