tmux 快速上手
tmux 介紹
截圖
dwm + alacritty + tmux + neovim + ranger:
下載
tmux 可以說是一款 TUI 開發人員不可或缺的終端復用神器。
$ yay -S tmux
在終端輸入以下命令即可進入 tmux:
$ tmux
概念
tmux 中有以下一些概念:
- server 服務
- session 會話
- window 窗口
- pone 窗格
每次輸入 tmux 命令後就會啟動一個 tmux 服務和 tmux 會話。
一個 tmux 會話可以有多個窗口,一個窗口可以有多個窗格。
我們最常使用的就是 tmux 中的窗口和窗格。
按鍵
prefix
和 vim 類似,tmux 中也有一個前綴鍵的概念,默認是 <c-b>
默認所有的快捷鍵在按下之前都必須先按下 prefix 鍵位才會生效。
比如:
ctrl+b w
ctrl+b s
會話
按鍵 | 描述 |
---|---|
s | 查看所有會話 |
d | 關閉當前會話 |
$ | 重命名會話 |
窗口
按鍵 | 描述 |
---|---|
c | 新建窗口 |
& | 關閉窗口 |
w | 窗口列表 |
n | 下一個窗口 |
p | 上一個窗口 |
l | 上一次窗口 |
1-9 | 切換到指定窗口 |
, | 窗口重命名 |
按下 prefix & 後會提醒你是否關閉窗口,按 y 或 n 即可。
窗格
按鍵 | 描述 |
---|---|
% | 水平窗格 |
“ | 垂直窗格 |
x | 關閉窗格 |
; | 向上切換窗格 |
o | 向下切換窗格 |
方向 | 向上下左右移動 |
{ | 與上一個窗格交換位置 |
} | 與下一個窗格交換位置 |
c-o | 向前移動窗格位置,第一個變最後一個 |
a-o | 向後移動窗格位置 ,最後一個變第一個 |
! | 將當前窗格拆分為獨立窗口 |
z | 全螢幕顯示當前窗格,再按一次便會原來大小 |
c-方向 | 調整窗格大小 |
q | 顯示窗格編號 |
配置
默認鍵
使用以下命令將所有 tmux 的默認按鍵命令導出到一個文件中,方便後期修改:
$ tmux list-keys > /tmp/tmux_default.txt
插件
tmux 和 vim 類似,都是用插件管理插件。
首先需要下載 tmux 插件管理器 tpm:
$ //github.com/tmux-plugins/tpm.git
下載完成後使用 vim 打開 ~/.tmux.conf,並且按下大 G。
按下 i 並填入以下內容,安裝我微調之後的 tmux-power 或原本 tmux-power 狀態欄插件。
$ set -g @plugin 'askify/tmux-power'
run '~/.tmux/plugins/tpm/tpm'
添加完成後重新運行 tmux 服務,然後按下快捷鍵即可下載插件:
prefix + I : 下載插件
prefix + U : 更新插件
prefix + alt + u:卸載插件(需要將插件從 ~/.tmux.conf 文件中注釋)
下載完成的插件都在 ~/.tmux/plugins/ 目錄中。
我的配置
下面是我的 tmux 配置,對原本某些按鍵做了修改,讓其更符合我個人的使用習慣:
# support mouse
set -g mouse on
# overtime time : ms
set -sg escape-time 1
# start window index
set -g base-index 1
# start pane index
setw -g pane-base-index 1
# == reload ==
bind r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded."
# == leader ==
unbind C-b
set -g prefix C-t
# == unbind ==
unbind d
unbind &
unbind '"'
unbind %
unbind C-s
unbind C-v
unbind C-u
unbind C-d
unbind C-k
unbind C-j
unbind C-h
unbind C-l
unbind k
unbind j
unbind h
unbind l
unbind f
unbind q
unbind t
unbind Tab
unbind p
unbind n
unbind c
# == pane ==
# split
bind C-s splitw -v
bind C-v splitw -h
# swap
bind C-u rotate-window
bind C-d rotate-window -D
# select
bind C-k selectp -U
bind C-j selectp -D
bind C-h selectp -L
bind C-l selectp -R
# full screen
bind c-f resize-pane -Z
# close
bind c-q kill-pane
# resize
bind k resizep -U 10
bind j resizep -D 10
bind h resizep -L 10
bind l resizep -R 10
# == window ==
bind t new-window
bind Tab last-window
bind p previous-window
bind n next-window
bind c kill-window
# == theme ==
# follow terminal color
set -g status-style bg=default
# status bar position
set -g status-position bottom
set -g @tmux_power_theme '#87D7FF'
# == plugin ==
set -g @plugin 'askify/tmux-power'
run '~/.tmux/plugins/tpm/tpm'