終端複用神器Tmux

終端複用神器Tmux

記得第一次接觸tmux是在一年前,當時是為了複用終端,不想開多個item2的tab,但是後來發現完全不會用,就一直擱在那兒,直到半年前再次拿起來,開始學習一些tmux的用法,如今半年過去了,真正的明白了為什麼說tmux是神器。

在用tmux之前一直都是用的iterm2(在mac上很好用的終端)原生的新開tab和分屏,其實也還好,界面看起來就像這樣:

終端複用神器Tmux

item2

但是分屏很多之後,可以看到很多狀態欄,並不是很美觀,對比tmux的分屏,看起來就要hack很多,tmux的分屏界面如下:

終端複用神器Tmux

tmux

正是基於這個原因,開始學著始使用tmux。

安裝

tmux的倉庫:
https://github.com/tmux/tmux

首先安裝tmux:

# mac安裝
brew install tmux
# linux 安裝
sudo apt-get install tmux
 

開始學習tmux之前首先要明確幾個概念:

  • session:概括一個任務,是一組window的集合,在任務開始前創建一個session,與此任務相關的狀態都會保存在session中,通過重新連接session可以方便的繼續未完成的任務。session最大的最用就是持久的保存工作狀態
  • window:tmux中的window其實就是我們常說的tab,在chrome中,新開一個tab就會新建一個頁面,tmux也類似
  • pane:單個window可以分成若干pane,就像前面使用iterm2分屏一樣

簡單來說就是:session包含window,window包含pane

終端複用神器Tmux

tmux名詞標註

session

新建

安裝完成後,在終端直接輸入`tmux`即可進入tmux。進入之後可以看到session的名字是0,這是因為我們直接輸入`tmux`會創建一個無名的會話,如果想要新建session的時候給session命名,可以使用以下命令:

tmux new -s your-session-name

斷開

如果想要斷開當前session可以使用

tmux detach # 斷開當前會話

或者使用快捷鍵`[prefix]+d`,其中`prefx`默認為`ctrl+b`

恢復

退出session之後,想要恢復之前工作的區域,直接在終端輸入:

tmux attach-session -t your-session-name
# 可以簡寫
tmux a -t your-session-name

其中`session-name`是可選的,如果不輸入,默認進入第一個會話。

關閉

使用完成後,要關閉,可以使用`tmux kill`命令,`kill`有以下四種:

  • `kill-server`:關閉sessions,clients和server,這個命令會將tmux創建的都關閉
  • `kill-session`
  • `kill-window`
  • `kill-pane`
# 關閉session
tmux kill-session -t your-session-name
# 關閉所有
tmux kill-server

查看

tmux list-session
# 簡寫
tmux ls

或者使用快捷鍵`prefix+s`查看所有session,`prefix+w`查看所有window。

終端複用神器Tmux

tmux基礎配置

tmux的配置在`~/.tmux.conf`文件中,如果沒有該文件,可以先新建配置文件。

配置tmux前綴

前面介紹session使用的時候,提到過一些快捷鍵,可以看到都是`prefix+xxx`的形式,這裡的`prefix`是tmux的前綴鍵,默認為`ctrl+b`,只有按下`prefix`,才會激活tmux,然後再按其他鍵進行tmux操作,這樣做的一個好處是可以有效的避免和其他應用快捷鍵的衝突。

但是如果經常用tmux,就會發現`ctrl`和`b`這兩個鍵按的不是很舒服,我們是否可以修改一個更加舒服的前綴鍵呢?當然是可以的,只需要在tmux的配置文件中解綁原有的`prefix`並修改成我們自定義的即可。配置如下:

set -g prefix C-a
# 解綁原有的prefix
unbind C-b
bind C-a send-prefix

配置完成後,需要重啟tmux,或者按下`ctrl+b`,然後輸入`:`進入命令模式,輸入:

source-file ~/.tmux.conf

或者我們給讓配置生效添加快捷鍵:

bind r source-file $HOME/.tmux.conf \; display-message 'Config reloaded'

這樣,直接輸入`prefix+r`就可以讓配置生效。

分屏

在tmux中,水平和豎直分屏默認快捷鍵為`prefix+"` 和 `prefix+%`,這兩個鍵可以說很少用而且不容易按到,我們可以自定義自己習慣的快捷鍵,對於對vim熟悉的用戶,可以將其設置為跟vim一樣的快捷鍵:

bind C-h splitw -v -c '#{pane_current_path}'
bind C-v splitw -h -c '#{pane_current_path}'

這裡的`splitw`其實是`split-window`的縮寫,`-c '#{pane_current_path}'`表示在打開新pane的時候,默認進入當前目錄。

切換pane

在iterm2中,切換標籤的快捷鍵是`commond+option+方向鍵`或`commond+[`或`commond+]`,相應的在tmux中,切換pane默認快捷為`prefix+方向鍵`但是方向鍵本身和`ctrl`離的太遠,操作不方便,同樣的我們可以設置自己喜歡的快捷鍵,例如設置跟vim一樣的快捷鍵(這裡多說一句,其實在vim中最常用的控制方向的鍵就是hjkl,如果習慣使用vim,可以設置tmux與之相同快捷鍵)。

bind h select-pane -L # up
bind j select-pane -D # down
bind k select-pane -U # left
bind l select-pane -R # right

開啟鼠標支持

在剛上手tmux的時候,總覺得各種命令很麻煩,而且不好記,如果支持鼠標就更好了,其實想要支持鼠標,只需要在配置文件中開啟即可:

set-option -g mouse on

開啟鼠標之後,切換pane可以直接點擊激活,調整分屏大小可以直接拖拽實現。

當然了,既然使用了tmux,目的就不只是界面好看而已,而是要提高效率,所以儘量少用鼠標

調整pane

如果想要使用快捷鍵調節pane大小,同樣可以設置快捷鍵實現:

bind H resize-pane -L 10 # 向左擴展10
bind L resize-pane -R 10 # 向右擴展10
bind K resize-pane -U 5 # 向上擴展5
bind J resize-pane -D 5 # 向下擴展5

這樣通過`prefix+HJKL`實現pane的擴展

System

終端複用神器Tmux

system

Window

終端複用神器Tmux

window

Panel

終端複用神器Tmux

Panel

參考

  • http://louiszhai.github.io/2017/09/30/tmux/#Tmux%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4)
  • https://cnbin.github.io/blog/2015/06/20/iterm2-kuai-jie-jian-da-quan/
  • https://gist.github.com/MohamedAlaa/2961058
  • https://gist.github.com/andreyvit/2921703

本文首發於博客/微信公眾號,更多內容可關注微信公眾號:tranceCoder


分享到:


相關文章: