今天部署測試伺服器環境
使用到了tmux 剛開始我把tmux想象成了像omzsh這種shell 但是被指出是錯誤的,tmux類似於在shell裡面的軟體。我還真是第一次接觸到這個概念。
首先安裝
brew install tmux
我在安裝的時候並沒有遇到什麼問題。
1. open session
$ tmux new-session -s basic
或者$ tmux new-s basic
-s引數表示session名稱,如果不加-s引數,那麼tmux缺省會新建乙個以數字(下標從0開始)命名的session,並預設開啟乙個window。開啟乙個session後,後續的所有控制tmux本身的快捷鍵都需要加字首,預設是ctrl+b,以下把字首按鍵稱為prefix。
2. detach session
想要暫時離開tmux,回到終端環境時,可以通過快捷鍵prefix+d(d for detach)。要注意的時,即使是detach的狀態,tmux中在執行的程式還會繼續執行。想要回到tmux session時,只需執行:
$ tmux attach -t basic
-t引數可以指定要attach的session。
3. list session
終端中執行tmux ls(ls for list session)可以列出當前有多少個session。如果已經在session中,執行prefix+s(s for session)可以列出當前有多少個session,並且可通過上、下鍵選擇要進入的session。
4. kill session
要真正關閉乙個session,可以在終端下執行命令tmux kill-session -t basic,其中-t引數表示session名稱。
二. window
如果說session是個不可見的東西,那麼window就是我們輸入、執行命令的地方。乙個session可以包含多個window。把window模擬成iterm2中的標籤應該就理解了。
1. 建立window
在建立session的時候缺省會建立乙個以"數字下標+bash"命名的window,並且名稱隨著bash中執行的不同命令而變化。在新建session時可以通過-n引數指定預設開啟的window名稱,比如通過tmux new -s basic -n win命名乙個win名稱的window。也可以隨時通過prefix+,來修改window名稱。
2. 切換window
類似標籤,我們可以通過一些快捷鍵在同乙個session下的多個window之間切換。比如:
prefix+p(p for previous):切換到上乙個window。
prefix+n(n for next): 切換到下乙個window。
prefix+0: 切換到0號window,依次類推,1、2、3...
prefix+w(w for windows): 列出當前session所有window,通過上、下鍵可以選擇切換到指定window。
3. 關閉window
prefix+&: 關閉當前window。
三. pane
乙個window可以切割成多個pane,也就是所謂的分屏,算是tmux的核心功能之一。
1. 分屏
prefix+%: 垂直分屏,用一條垂線把當前視窗分成左右兩屏。
prefix+": 水平分屏,用一條水平線把當前視窗分成上下兩屏。
2. 切換pane
預設情況下,被選中(啟用狀態下)的pane會被綠色邊框高亮突顯出來。
prefix+o: 依次切換當前視窗下的各個pane。
prefix+up|down|left|right: 根據按箭方向選擇切換到某個pane。
prefix+space(空格鍵): 對當前視窗下的所有pane重新排列布局,每按一次,換一種樣式。
prefix+z: 最大化當前pane。再按一次後恢復。
3. 關閉pane
prefix+x: 關閉當前使用中的pane。
關於tmux的三個核心概念(session、window和pane)及其基本用法已經介紹完畢。接下來的是一些個性化配置和奇技淫巧,包括重新繫結快捷鍵、自定義快捷鍵、ui樣式、滑鼠支援、複製貼上等等,這些可配置的高階功能也是tmux受人推崇的原因。tmux配置檔案推薦放在~/.tmux.conf檔案中,避免某個使用者修改配置影響到其他使用者,修改配置檔案後要經過reload操作才會在已開啟session中生效。
一. 重新繫結快捷鍵
tmux的很多預設配置不夠友好,需要個人重新定義。
unbind c-b
set-g prefix c-a
bind c-a send-prefix
bind r source-file ~/.tmux.conf \; display "tmux.conf reload!"bind |split-window -h
bind -split-window -v
bind h select-pane -l
bind j select-pane -d
bind k select-pane -u
bind l select-pane -r
set-g base-index 1set-g pane-base-index 1
二. 滑鼠支援
set-window-option -g mode-mouse on
set-g mouse-select-pane on
set-g mouse-resize-pane on
set-g mouse-select-window on
第1行表示啟用滑鼠。雖然tmux推薦用鍵盤完成所有操作,但是對現代開發人員來說,純鍵盤操作的習慣並非那麼容易養成,因此啟用滑鼠配置成為標配。
第2行表示支援滑鼠選擇pane。
第3行表示支援滑鼠調整pane大小。
第4行表示支援滑鼠選擇window。
三. ui樣式調整
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set-g status-justify left
setw -g monitor-activity on
第1-3行表示狀態列中window標籤的高亮樣式,預設是綠底黑字,設定後當前window紅底白字顯示。
第5行表示狀態列中window列表左對齊排列。
第7行表示非當前window有內容更新時顯示在狀態列。
四. 複製貼上
預設情況下,按prefix+[進入複製模式,按回車(enter)退出複製模式。可以通過配置在複製模式中使用vi習慣操作:
setw -g mode-keys vi
在複製模式下,按空格鍵(space)開始複製,按回車(enter)完成複製,並退出模式,按prefix+]貼上。這些快捷鍵也可以通過以下配置進行修改,使操作更加靠近vi。
unbind [bind escapecopy-mode
unbind p
bind p paste-buffer
bind -t vi-copy 'v'begin-selection
bind -t vi-copy 'y'copy-selection
第1-2行表示重新繫結escape鍵,prefix+escape為進入複製模式。
第3-4行表示重新繫結p鍵,prefix+p為貼上。
第5行表示重新繫結v鍵,prefix+v為開始複製。
第6行表示重新繫結y鍵,prefix+y為完成複製。
要檢視當前複製的內容,可以在prefix+:後出現的命令列中輸入show-buffer,輸入list-buffers可以列出所有的複製歷史內容。
關於複製貼上,更深入的話題是tmux和系統剪貼簿之間的互動,linux可以使用xclip,mac可以使用tmux-macosx-pasteboard,不過我沒有試驗成功,暫時可以通過alt + 滑鼠複製內容到系統剪貼簿。
五. 多屏操作
預設情況下,乙個window上只有乙個pane被啟用,接收鍵盤互動。但是某些場景下需要在多個pane中執行相同的操作,比如同時修改兩台或更多台遠端機器的nginx配置,這時候可以在分屏後按prefix+:進入命令模式,輸入set synchronize-panes,即可進入批量操作模式,要退出批量操作模式,再次輸入set synchronize-panes即可。
此文**
Tmux常用快捷鍵
ctrl b 左右分屏 ctrl b 上下分屏 ctrl b o 順時針旋轉切換工作分屏 ctrl b ctrl o 順時針旋轉移動工作分屏 ctrl b space 分屏排列切換 ctrl b x 關掉當前分屏終端 ctrl b z 最大化 復原當前分屏 v1.8以後版本 ctrl b c 新建視...
Tmux常用快捷鍵
會話 session 視窗 window 窗格 pane 快捷鍵可以自定義.修改 tmux.conf檔案 tmux new建立預設名稱的會話 tmux new s mysession建立名為mysession的會話 tmux ls顯示會話列表 tmux a連線上乙個會話 tmux a t myses...
tmux 常用快捷鍵
目錄 視窗快捷鍵 建立新視窗 切換新視窗 重新命名視窗 窗格快捷鍵 建立 關閉窗格 切換窗格 窗格位置變換 變換窗格 c b c 建立乙個新視窗,狀態列會顯示多個視窗的資訊。c b p 切換到上乙個視窗 按照狀態列上的順序 c b n 切換到下乙個視窗。c b 切換到指定編號的視窗,其中的是狀態列上...