srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/tools/tmux.md
blob: ad62f0cbae43827c95c05a62fbc0c747e3aa64e2 (plain) (blame)
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
## Tmux Notes
#### Quick Summary
If a  command/keybinding starts with a colon `:` assume that a prefix precedes it.
Usually the default prefix is `Ctrl + b` but can be different if set to something
else.  
To set a different prefix put the following into tmux.conf:
```bash
# Setting the prefix from C-b to C-s
unbind C-b
set -g prefix C-s
# Ensure that we can send Ctrl + S to other apps
bind C-s send-prefix
```

#### Basic commands/keys
* Enter command mode  
`<prefix> :`  
* List keybindings  
$ `tmux list-keys`  
`:list-keys`  
`<prefix> ?`  
* Close current pane  
$ `exit`  
`<prefix> x`  

- - -

#### Plugins
* Installing plugins  
`<prefix> I`  
then reload tmux environment with either:  
$ `tmux source ~/.tmux.conf`  
or if tmux config is in a XDG config base directory  
$ `tmux source ~/.config/tmux/tmux.conf`  
or use this keybinding  
`<prefix> r`  
* Plugin uninstall  
Delete or comment out the plugin in .tmux.conf  
Then save and reload
- - -

#### Panes  
#### PANES  
* Toggle last active pane  
`<prefix> ;`  

* Split pane horizontally  
`<prefix> %`  

* Split pane vertically  
`<prefix> "`  

* Move the current pane left  
`<prefix> {`  

* Move the current pane right  
`<prefix> }`  

* Switch to another pane depending on it's direction  
`<prefix> <Up>`  
`<prefix> <Down>`  
`<prefix> <Right>`  
`<prefix> <Left>`  

* Toggle synchronize-panes(send command to all panes)  
`:setw synchronize-panes`  

* Switch to next pane  
`<prefix> o`  

* Show pane numbers  
`<prefix> q`  

* Switch/select pane by number  
`<prefix> q 0 ... 9`  

* Resize current pane height  
`<prefix> Ctrl + <Up>`  
`<prefix> Ctrl + <Down>`  

* Resize current pane width  
`<prefix> Ctrl + <Left>`  
`<prefix> Ctrl + <Right>`  

* move current pane up or anti-clockwise  
`:swap-pane -U`

* move current pane down or clockwise  
`:swap-pane -D` 

* move current pane to the left  
`<prefix> {`  
`:swap-pane -L`  

* move current pane to the right  
`<prefix> }`  
`:swap-pane -R`  

* show pane numbers (type number to move cursor)  
`<prefix> q`  

* toggle pane arrangements/layouts  
`<prefix> <Space>`  


* Toggle pane zoom  
`<prefix> z`  

* Convert pane into a window  
`<prefix> !`  

* Close current pane  
`<prefix> x`  
or just type  
$ `exit`

- - -

#### WINDOWS  
* Start a new session with the name ***mysession*** and window ***mywindow***  
$ `tmux new -s mysession -n mywindow`  

* Create window  
`<prefix> c`  

* Rename current window  
`<prefix> ,`  

* Previous window  
`<prefix> p`  

* Next window  
`<prefix> n`  

* rotate window  
`<prefix> Ctrl + o` 

* Move(cycle) cursor to next window  
`<prefix> o`  

* Switch/select window by number  
`<prefix> 0 ... 9`  

* Reorder window, swap window number 2(src) and 1(dst)  
`:swap-window -s 2 -t 1`  

* Move current window to the left by one position  
`:swap-window -t -1`  

* Close Window  
`<prefix> &`  
`:kill-window`  
- - -

#### SESSIONS  
* Start a new session  
$ `tmux`  
$ `tmux new`  
$ `tmux new-session`  
`<prefix> :new`

* Start a new session with the name ***mysession***  
$ `tmux new -s mysession`  
`<prefix> :new -s mysession`

* Kill/delete session ***mysession***  
$ `tmux kill-ses -t mysession`  
$ `tmux kill-session -t mysession`  

* Kill/delete all sessions but the current  
$ `tmux kill-session -a`

* Kill/delete all sessions but ***mysession***  
$ `tmux kill-session -a -t mysession`  

* Rename session  
`<prefix> $`  

* Detach from session  
`<prefix> d`  

* Detach others on the session (Maximize window by detaching other clients)  
`:attach -d`  

* Show all sessions  
$ `tmux ls`  
$ `tmux list-sessions`  
`<prefix> s`  

* Attach to last session  
$ `tmux a`  
$ `tmux at`  
$ `tmux attach`  
$ `tmux attach-session`  

* Attach to a session with the name ***mysession***  
$ `tmux a -t mysession`  
$ `tmux at -t mysession`  
$ `tmux attach -t mysession`  
$ `tmux attach-session -t mysession`  

* Move to previous session  
`<prefix> (`  

* Move to next session  
`<prefix> )`  
- - -

#### SSH  
* Make sure ssh is setup and use this command on the remote-machine  
`$ tmux new-session -s pair`  
* Connect to the remote tmux session  
`$ ssh -t user@remote-machine tmux attach-session -t pair`  
- - -

#### Copy Mode  
* Use vi keys  
`:setw -g mode-keys vi`  
or put this into tmux.conf:
```bash
set-window-option -g mode-keys vi
```

* Enter copy mode  
`<prefix> [`  

* Enter copy mode and scroll one page up  
`<prefix> <PgUp>`  

* Quit mode  
`<q>`  

* Go to top line  
`<g>`  

* Go to bottom line  
`<G>`  

* Scroll up  
`<Up>`  

* Scroll down  
`<Down>`  

* Move cursor left  
`<h>`  

* Move cursor down  
`<j>`  

* Move cursor up  
`<k>`  

* Move cursor right  
`<l>`  

* Move cursor forward one word at a time  
`<w>`  

* Move cursor backward one word at a time  
`<b>`  

* Search forward  
`</>`  

* Search backward  
`<?>`  

* Next keyword occurance  
`<n>`  

* Previous keyword occurance  
`<N>`  

* Start selection  
`<Space>`  

* Clear selection  
`<Esc>`  

* Copy selection  
`<Enter>`  

* Paste contents of buffer_0  
`<prefix> ]`  

* Display buffer_0 contents  
`:show-buffer`  

* Copy entire visible contents of pane to a buffer  
`:capture-pane`  

* Show all buffers  
`:list-buffers`  

* Show all buffers and paste selected  
`:choose-buffer`  

* Save buffer contents to buf.txt  
`:save-buffer buf.txt`  

* Delete buffer_1  
`:delete-buffer -b 1`  
- - -

#### MISC  
* Enter command mode  
`<prefix> :`  

* Set OPTION for all sessions  
`:set -g OPTION`  

* Set OPTION for all windows  
`:setw -g OPTION`  

* Enable mouse mode  
`:set mouse on`  

* Show time  
`<prefix> t`
- - -

#### HELP  
* List key bindings(shortcuts)  
$ `tmux list-keys`  
`:list-keys`  
`<prefix> ?`  

* Show every session, window, pane, etc...  
$ `tmux info`  
- - -