linux下的終端利器 tmux 安裝以及使用
ref :https://www.jianshu.com/p/fd3bbdba9dc9
Introduction
為什麽使用tmux?
因為如果我們用terminal連接remote server。發生一些不可抗力,terminal關了的話,your work is GONE!
但是tmux不一樣,即使你關閉了tmux。下次重新attch的時候,你會發現之前的東西都還在。這是因為即使你關閉了tmux,它也還在服務器的後臺運行。
- prefix默認指的是ctrl鍵位和b鍵位,兩個一起press,然後再按其他鍵位來實現不同的命令。在第4部分,我們會更改這個默認設置為ctrl+a,方便輸入。在此之前默認都是ctrl+b
舉個栗子:
prefix + % :水平分割pane
上面這句話裏的+
號和:
號可以無視。:
號之後的內容是我寫的註釋。
prefix是按下ctrl和b, 然後再按%
鍵,這個%
鍵就是shift+5。
2 Panes
分割pane
- prefix + % :水平分割pane
- prefix + " : 豎直分割pane
退出
- exit : 退出一個pane,直接在shell裏輸入即可,這個比快捷鍵方便
放大一個pane
- prefix + z : 把當前一個pane放大(zoom in)。比如在用ls查看output的時候,因為一個pane可能空間太小,所以把這個pane放大,你可以把註意力全放在這個pane裏。回到之前的多pane狀態的話只需要重復一遍命令即可(zoom out)
在pane之間switch
- prefix + 上下左右的箭頭 :這個說實話還是不方便,之後會有設置的方法來用鼠標選擇pane
resize the pane
- prefix + (ctrl)+上下左右箭頭 : 與上面命令不同的是,ctrl + b按完之後,不要松開ctrl,一直按著,然後再按箭頭來調整。不過因為在mac下ctrl+箭頭是切換屏幕,所以還得在偏好設置->鍵盤->快捷鍵->Mission Control裏把對應的快捷鍵取消掉。
3 Windows
創建window
- prefix + c : 創建一個新的window。最下面會多出window的編號。有*號所在的window就是當前正在操作的window。
在不同的window間移動
- prefix + 數字1,2,3 : 因為能看到不同window的數字編號,所以直接輸入想去的window的數字編號即可
關閉window
- prefix + & : 關閉當前window
重命名window:因為創建新的window後,下面除了數字編號不同外window名稱都是一樣的。所以為了知道每一個window是什麽,最好重命名一下。
- prefix + , (逗號):更改window名稱。但是這裏遇到一個問題。更名後,我隨便使用ls或cd命令後,window名稱會隨著目錄的不同而變化。google後發現這個是zsh下oh-my-zsh的特性。於是打開~/.zshrc, 講DISABLE_AUTO_TITLE="true"這一行反註釋掉。source ~/.zshrc後,測試更改的名稱,發現一切正常。
4 Configuration
如果沒有配置文件的話先創建: touch ~/.tmux.conf
視頻中的文件配置
# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
# Use Alt-arrow keys to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window
# Mouse mode
set -g mode-mouse on
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v
# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"
首先,在更改了.tmux.conf後,在tmux裏的快捷鍵沒有變化。查找後發現是tmux只有在新建session的時候,才會去找tmux.conf文件。所以說,我之前創建的那些session都沒有參考tmux.conf. 所以我就用tmux lstmux kill-session -a
只保留當前session。再刪除當前session tmux kill-session -t py27
。這下刪除了所有創建好的session。
然後再次用tmux new -s py27
創建一個新的名為py27
的session。有提示了,但是錯誤提示顯示沒有mode-mouse命令。google之發現在2.1之後的tmux版本裏,已經廢除了這個命令。想要開啟mouse mode的話,只需要一個句命令即可set -g mouse on
。
更新後如下
# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
# Use Alt-arrow keys to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window
# Mouse mode
set -g mouse on
# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v
# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"
Send prefix
把prefix的ctrl+b變為了ctrl+a,因為這樣按起來方便些。基本上用tmux的都改了這個。
Use Alt-arrow keys to switch panes
不用按prefix,直接用alt+箭頭在pane之間switch。實際用過之後才發現真是太方便了!
Shift arrow to switch windows
不用按prefix,直接用shift+箭頭在window之間switch。太方便了!
Mouse mode
開啟鼠標模式。用鼠標就能切換window,pane,還能調整pane的大小,方便!
Set easier window split keys
這一部分是用來更方便切分pane的。prefix + v 代表豎著切,prefix + h 代表橫著切。比起默認的切割方法不僅直觀而且方便。
Easy config reload
下一次如果修改了.tmux.conf的設置的話,不用關掉tmux。直接用prefix+r,就能重新加載設置。
5 Session
查看所有的session(在terminal輸入)
- tmux ls : 這個命令是在terminal裏輸入的。當前正常運作中的tmux server會顯示(attached)。沒有的話就是已關閉,tmux server在後臺運行。
更名session(tmux狀態下輸入)
- prefix + $ : 更名後好讓自己知道每一個session是用來做什麽的。通常一個session對應一個project
創建session的時候直接命名(在terminal輸入)
- tmux new -s py35 : 新建一個名為py35的session
斷開一個session(detached) (tmux狀態下輸入)
- prefix + d :退出session。在只有一個window的狀態下,直接輸入exit也能退出
重新連接某一個session wich name(在terminal輸入)
- tmux a -t py35 : 重新連接py35 session。這裏的a是attach的意思
偷懶連接上一個session(在terminal輸入)
- tmux a : 如果只有一個session的話,這個是最快的連接方法
刪除session(在terminal輸入)
- tmux kill-session -a -t py35 : 刪除除了py35以外的所有session
linux下的終端利器 tmux 安裝以及使用