tmux學習筆記

tmux簡單介紹

tmux是一款終端複用工具,我主要在ssh時使用它。相似的有screen,之後有空再學。git

當初在windows上可使用xshell進行ssh鏈接,很是好用。換到mac上就沒有那麼好用的工具了,只能使用terminal或者iterm2,克隆會話啥的須要配置,比較麻煩,仍是學學tmux比較好。github

最多見的使用場景就是使用tmux開左右兩個pane,一邊vim,一邊shell或者看日誌。shell

基本概念

sessionvim

會話,一個服務器上能夠包含多個session,在終端輸入tmux就能夠打開一個新的sessionwindows

window服務器

窗口,一個session能夠包含多個windowmarkdown

panesession

面板,一個window能夠包含多個pane(即分屏)ssh

入門

最開始只須要掌握如下幾個命令工具

  • <ctrl+b>默認的prefix-command
  • ?列出全部快捷鍵,按q返回
  • %左右分屏
  • "上下分屏
  • 方向鍵在pane之間轉換
  • x關閉當前pane
  • &關閉當前window

掌握了這幾個命令,基本就能使用tmux了

最重要的就是記住<ctrl+b>這個prefix-command,在tmux內執行任何操做前都須要按這個組合鍵。這個前綴組合按鍵固然是能夠在配置文件裏修改的,後面會介紹。

進階

主要介紹一下比較經常使用的進階操做,過於冷門的操做就不作介紹了。

基本操做

如下操做,在終端中執行時須要加上tmux,如新建一個名爲「test」的session的命令爲tmux new -s "test";在tmux內,先按ctrl+b,而後輸入:就能夠敲命令了

new              # Create a new session
 -s "Session"    # Create named session
 -n "Window"     # Create named Window
 -c "/dir"       # Start in target directory

attach           # Attach last/available session
 -t "#"          # Attach target session
 -d              # Detach the session from other instances

ls               # List open sessions
 -a              # List all open sessions

lsw              # List windows
 -a              # List all windows
 -s              # List all windows in session

lsp              # List panes
 -a              # List all panes
 -s              # List all panes in session
 -t              # List all panes in target

kill-window      # Kill current window
 -t "#"          # Kill target window
 -a              # Kill all windows
 -a -t "#"       # Kill all windows but the target

kill-session     # Kill current session
 -t "#"          # Kill target session
 -a              # Kill all sessions
 -a -t "#"       # Kill all sessions but the target

session操做

在tmux內,先按ctrl+b

命令 說明
s 列出全部session,而後能夠切換session
$ 重命名當前session
d 離開當前session,回到終端

window操做

在tmux內,先按ctrl+b

命令 說明
c create window,新建窗口
& 關閉當前窗口
數字鍵 切換到指定窗口
w 列出全部窗口,而後能夠切換窗口
, 重命名當前窗口
p previous window,切換到上一窗口
n next window,切換到下一窗口
l 先後窗口間互相切換
. 修改當前窗口編號,只能改成當前沒被佔用的編號
f find window,在全部窗口中查找關鍵詞,便於在多個窗口間切換

pane操做

在tmux內,先按ctrl+b

命令 說明
" 將當前面板上下分屏
% 將當前面板左右分屏
x 關閉當前面板
方向鍵 選擇對應的面板
q 顯示當前窗口內全部面板的編號,立刻按下數字鍵可轉到指定面板
z tmux1.8加入的功能,將當前面板最大化
o 選擇當前窗口中下一個面板
ctrl+方向鍵 以1個單元格爲單位移動邊緣以調整當前面板大小
alt+方向鍵 以5個單元格爲單位移動邊緣以調整當前面板大小

複製粘貼

  1. ctrl+b [進入複製模式
  2. 默認使用方向鍵進行移動,能夠在配置文件中設置setw -g mode-keys vi來使用vi模式進行移動
  3. 移動到想複製的地方後,按空格鍵以後再移動光標就能夠開始選擇文本了
  4. 選擇完成後,按回車鍵完成複製
  5. ctrl+b ]粘貼

配置文件

配置文件爲~/.tmux.conf,在tmux啓動時自動加載設置,如同vimrc。

可配置內容包括通用內容(編碼、歷史記錄、鼠標等)、快捷鍵綁定、主題和UI。

我只設置了底部狀態欄的樣式,效果以下圖:

配置內容爲:

# 替換prefix key
# set-option -g prefix C-a

# 顏色
set -g status-bg black
set -g status-fg white

# 位置
set-option -g status-justify centre

# 左側
set-option -g status-left '#[bg=black,fg=green][#[fg=cyan]#S#[fg=green]]'
set-option -g status-left-length 20

# 中間的window列表
setw -g automatic-rename on
set-window-option -g window-status-format '#[dim]#I:#[default]#W#[fg=grey,dim]'
set-window-option -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#W#[fg=dim]'

#右側
set -g status-right '#[fg=green][#[fg=cyan]%Y-%m-%d#[fg=green]]'

# 鼠標滾屏
set-option -g mouse on

# 0太遠了
set -g base-index 1

# f11 f12用於切換窗口
bind -n F11 previous-window
bind -n F12 next-window

參考資源

相關文章
相關標籤/搜索