www涩-www黄网站-www黄色-www黄色com-国产免费拍拍视频在线观看网站-国产免费怕怕免费视频观看

效率為王:終端管理工具 Tmux

2018-03-13 17:29:17 csdn  點(diǎn)擊量: 評(píng)論 (0)
簡介Tmux 是一款非常實(shí)用的終端復(fù)用器,用來管理一個(gè)終端窗口中運(yùn)行的多個(gè)終端會(huì)話。它通過會(huì)話,窗口,面板的形式高效且有序的管理你所有

簡介

Tmux 是一款非常實(shí)用的終端復(fù)用器,用來管理一個(gè)終端窗口中運(yùn)行的多個(gè)終端會(huì)話。它通過會(huì)話,窗口,面板的形式高效且有序的管理你所有的工作終端。

此外,它還可以通過將終端會(huì)話置于后臺(tái)運(yùn)行,在需要時(shí)按需接入,以及將會(huì)話共享給其他人,是遠(yuǎn)程辦公和結(jié)對編程的利器。無論是前端還是后端開發(fā)工程師,運(yùn)維人員,都值得將其加入個(gè)人的日常工具列表。

安裝

在 MacOs 下,安裝 tmux 非常簡單,使用 homebrew 便可以安裝最新的版本:


brew install tmux

對于 Linux,大部分發(fā)行版都有打包 tmux,可以通過包管理器安裝,比如在 Ubuntu 下,可以使用 apt 安裝。


apt install tmux

在 windows 下想使用 tmux 有兩種方法:

  • window10 加入了 linux 子系統(tǒng)的功能,用戶可以在 windows 下使用 Ubuntu linux。安裝 tmux 的方法和原生 Ubuntu 完全一樣;

  • 對于 windows7 以及更加古老的版本,個(gè)人推薦使用 Cygwin,這是一個(gè)在 windows 下模擬 linux 的工具,提供了大部分 *nix 軟件的安裝,里面就包括了 tmux。

初次使用

初次使用 tmux,只需要在終端下面鍵入命令:


tmux

默認(rèn)情況下會(huì)啟動(dòng)一個(gè)新的會(huì)話(session)。這時(shí)候窗口顯示如下:

?wx_fmt=png

可以看到 Tmux 在默認(rèn)終端上面啟動(dòng)了一個(gè)新的界面。包括原來的 shell 窗口和下方的狀態(tài)欄。

狀態(tài)欄顯示了當(dāng)前 tmux session 的基本信息。

  • [0] 代表當(dāng)前 session 的名字;

  • 0:bash 代表當(dāng)天 session 的第一個(gè)窗口,名字為 bash;

  • 其他部分為當(dāng)前主機(jī)名,以及當(dāng)前時(shí)間。

作為一款基于終端的工具,tmux 所有的操作都使用鍵盤快捷鍵來進(jìn)行,熟悉了 tmux 的快捷鍵之后,我們可以把自己的雙手從鼠標(biāo)完全解放出來,對提高工作生產(chǎn)力有極大的作用。

tmux 的快捷鍵使用 Prefix + key 的形式。如果使用過 Gnu screen,那么對這種模式應(yīng)該很熟悉,不同的是,Gnu screen 默認(rèn)的 prefix 是 ctrl + a,而 tmux 的默認(rèn)快捷鍵是 ctrl + b,按鍵方法為同時(shí)按下 ctrl 鍵 和 b 鍵。這個(gè)組合是可以定制的,在本文中,我們用 prefix 來代表這個(gè)按鍵組合。

現(xiàn)在我們可以使用快捷鍵創(chuàng)建一個(gè)新的窗口,按下 prefix + c(同時(shí)按下 Ctrl + b,放開,然后按下 c)。

效果如下圖所示:

?wx_fmt=jpeg

此時(shí)整個(gè)窗口沒有太大的變化,只是下面的狀態(tài)欄多了一個(gè) 1:bash,表示當(dāng)前啟動(dòng)了兩個(gè)窗口。

現(xiàn)在可以試著按下 prefix + n,看 tmux 如何在不同的窗口間轉(zhuǎn)跳。

服務(wù)器和會(huì)話

tmux 本質(zhì)上可以說是一個(gè)服務(wù)器,當(dāng) tmux 命令運(yùn)行的時(shí)候,后臺(tái)運(yùn)行了一個(gè) tmux 服務(wù),并啟動(dòng)一個(gè)會(huì)話,會(huì)話和服務(wù)器之間通過 Unix socket 來通信。

默認(rèn)情況下啟動(dòng)的 tmux 會(huì)話通過數(shù)字命名,比如第一個(gè)會(huì)話為 0??梢酝ㄟ^:


tmux new -s session_name

來創(chuàng)建一個(gè)命名的 tmux 會(huì)話,比如tmux new -s test。啟動(dòng)會(huì)話之后,tmux 自動(dòng)連接到此會(huì)話之上。我們可以脫離會(huì)話,這樣可以將會(huì)話里面運(yùn)行的任務(wù)置于后臺(tái),在需要的時(shí)候重新連接。

脫離會(huì)話的快捷鍵為 prefix + d,脫離會(huì)話之后系統(tǒng)回到之前的終端。用這種方法,我們可以方便在在遠(yuǎn)程主機(jī)上啟動(dòng)一個(gè)長期運(yùn)行的 tmux 會(huì)話,運(yùn)行我們想長期運(yùn)行的程序。我們可以用 tmux ls查看當(dāng)前所有創(chuàng)建的 session,比如:


tmux ls learn: 1 windows (created Sun Dec 17 21:03:20 2017) [80x24] test: 1 windows (created Sun Dec 17 20:59:44 2017) [80x24]

這里我創(chuàng)建了兩個(gè) tmux 會(huì)話,名字分別為 testlearn

重新連接 tmux 的命名為tmux attach。在沒有任何參數(shù)的情況下默認(rèn)連接最新創(chuàng)建的會(huì)話??梢蕴砑訁?shù)-t $name,連接名字為$name的 tmux 會(huì)話。比如tmux a -t learn。同時(shí)這里顯示了一個(gè) tmux 的小技巧,很多 tmux 的命令可以縮寫,這里將 attach 縮寫成為了 a。

在 tmux session 里面,可以通過 prefix + s選擇并快速切換 tmux 會(huì)話,如下圖所示。tmux 會(huì)彈出一個(gè)會(huì)話的選擇列表,可以通過方向鍵選擇我們想打開的會(huì)話。

?wx_fmt=jpeg

如果在創(chuàng)建了會(huì)話之后想重命名當(dāng)前會(huì)話,可以使用prefix + $,在底部彈出的輸入框里面輸入想要的名字即可。這里也可以使用 tmux 的命令模式。按下prefix + :,在輸入框里輸入:rename-session new-session(支持 tab 補(bǔ)全),便可以重命名當(dāng)前的會(huì)話。

注意當(dāng)服務(wù)器重啟之后,tmux 的會(huì)話信息會(huì)丟失。要持久化保存 tmux 會(huì)話信息,在本文的 tmux 插件部分會(huì)介紹一款簡單易用的插件  tmux-resurrect。

窗口

之前我們演示了如何創(chuàng)建新的窗口,并使用prefix + n,表示選擇下一個(gè)窗口。

在不同窗口之間移動(dòng),除了 prefix + n之外,還可以用數(shù)字鍵,選擇第 N 個(gè)窗口,注意 tmux 中窗口的序號(hào)是從 0 開始,因此prefix + 1表示選擇第二個(gè)窗口。prefix + p表示轉(zhuǎn)跳到前一個(gè)窗口。

我們還可以使用快捷鍵prefix + w來彈出一個(gè)虛擬的窗口列表,然后使用方向鍵來選擇所需要打開的窗口。

使用prefix + ,可以用來重命名當(dāng)前的窗口,對應(yīng)的命令模式為rename-window。

鍵入 exit,會(huì)退出當(dāng)前窗口,但是有的時(shí)候窗口可能會(huì)卡死,此時(shí)我們可以使用prefix + &,在輸入確認(rèn)之后,強(qiáng)制殺死當(dāng)前窗口。

面板

窗口可以分割為更小的面板,配合大屏顯示器使用,非常有黑客的感覺。首先我們使用:


tmux new -s pane

創(chuàng)建一個(gè)新的 session,然后鍵入prefix + %,然后鍵入prefix + ",可以得到如下這樣一個(gè)被分割的窗口:

?wx_fmt=png

當(dāng)前光標(biāo)所在的面板被高亮了出來。 我們可以繼續(xù)鍵入prefix + %prefix + "查看繼續(xù)分割面板的效果。要在不同的面板之間轉(zhuǎn)跳,使用快捷鍵prefix + o。如果要想上下左右的移動(dòng)到不同的面板,使用快捷鍵prefix + 方向鍵。

在默認(rèn)情況下,tmux 平均分割一個(gè)面板。我們可以通過prefix + ctrl + 方向鍵來調(diào)整面板的大小。

有的時(shí)候我們可能需要將一個(gè)面板放大,占滿整個(gè)窗口。我們可以使用prefix +!,將面板轉(zhuǎn)化為一個(gè)新的窗口;或者也可以使用prefix + z,使當(dāng)前面板最大化為窗口,并暫時(shí)隱藏其他的面板。

強(qiáng)制退出一個(gè)面板的快捷鍵為prefix + x。

小結(jié)

會(huì)話 + 窗口 + 面板的組合是提升我們工作效率的一個(gè)強(qiáng)力組合。一個(gè)推薦的使用方法為對不同的項(xiàng)目建立不通的會(huì)話,使用窗口來分割一個(gè)項(xiàng)目里面的不同工作內(nèi)容,然后使用面板來適用大屏開發(fā)。下面的一個(gè)截屏是我工作所建立的所有會(huì)話列表:

?wx_fmt=png

不同的項(xiàng)目被我放到了不同的會(huì)話里面,當(dāng)我需要轉(zhuǎn)跳到某一個(gè)項(xiàng)目的時(shí)候,使用prefix + s轉(zhuǎn)跳到對應(yīng)會(huì)話,之前項(xiàng)目所配置好的環(huán)境立刻就恢復(fù)了。

tmux 配置

tmux 比 screen 更加流行的一個(gè)原因就是在默認(rèn)配置的情況下它已經(jīng)足夠好用了。當(dāng)然,我們也可以通過配置文件對 tmux 進(jìn)行個(gè)性化配置。它的默認(rèn)配置文件為 ~/.tmux.conf,如果需要使用其他的文件,可以使用 tmux -f選項(xiàng),讀入另外一個(gè)配置文件。

默認(rèn) prefix

我們可以通過配置文件更改 tmux 的默認(rèn) prefix。個(gè)人使用的 prefix 為ctrl-z,習(xí)慣了 screen 的人可以配置為ctrl-a。這里以ctrl-z為例,用文本編輯器打開~/.tmux.conf,在里面加入內(nèi)容:


set -g prefix C-z unbind-key C-b

這里 -g表示全局設(shè)置,應(yīng)用于我們創(chuàng)建的所有會(huì)話。這是ctrl-b可以被釋放出來組合,這里通過unbind-key C-b實(shí)現(xiàn)。

要使這個(gè)設(shè)置生效,我們應(yīng)該重新加載 .tmux.conf。鍵入prefix + :打開命名模式,在輸入框內(nèi)輸入source ~/.tmux.conf。此時(shí)我們就可以使用新的 prefix 了。

快速重載配置文件

修改完配置文件之后再使用命令行模式重載實(shí)在太麻煩了,我們可以自定義一個(gè)快捷鍵,簡化這個(gè)操作。在~/.tmux.conf里面加入:


bind-key r source-file ~/.tmux.conf\; display-message "Config reloaded"

我們最后一次使用prefix + : + source ~/.tmux.conf的方式重新加載配置文件。之后就可以用prefix + r的方式來做這件事了。在 .tmux.conf 中加入。


bind e new-window -n ".tmux.conf" "vim ~/.tmux.conf"

這個(gè)prefix + e的組合可以讓你迅速的打開 .tmux.conf 并進(jìn)行配置修改,配置完成之后使用 prefix + r的方式重新加載,整個(gè)操作在幾秒內(nèi)即可完成。

更改默認(rèn)序號(hào)

由于 tmux 的窗口和面板默認(rèn)序號(hào)都是從 0 開始,我們可以更改這個(gè)設(shè)置,使默認(rèn)序號(hào)從 1 開始。


set -g base-index 1         setw -g pane-base-index 1

更改分割面板的快捷鍵

tmux 垂直和水平分割面板的快捷鍵分別為prefix + %prefix + "。這兩個(gè)按鍵比較難記憶,我們可以將其更改為prefix + |prefix + -。將以下配置加入 ~/.tmux.conf


bind-key | split-window -h bind-key - split-window

更改面板間移動(dòng)的快捷鍵

大部分鍵盤操作工具,比如 vim,都使用jkhl來進(jìn)行上下左右的移動(dòng)操作。我們可以將面板間移動(dòng)的操作綁定到對應(yīng)的按鍵。配置如下:


bind-key l select-pane -R bind-key h select-pane -L bind-key j select-pane -D bind-key k select-pane -U

面板大小調(diào)整

我們用類似移動(dòng)鍵的方式來進(jìn)行面板的大小調(diào)整。將快捷鍵重新定義為 JKHL。配置如下:


bind-key L resize-pane -R 5 bind-key H resize-pane -L 5 bind-key K resize-pane -U 5 bind-key J resize-pane -D 5

鼠標(biāo)模式

鼠標(biāo)模式有時(shí)候也可能非常有用,比如你可能想用鼠標(biāo)來選中一個(gè)面板或者窗口,用鼠標(biāo)調(diào)整面板大小,或者用鼠標(biāo)滾輪來向上滾動(dòng)瀏覽歷史。

開啟 / 關(guān)閉鼠標(biāo)模式的配置為 set -g mouse on/off,需要在命令模式下敲入這串字符。我們可以更進(jìn)一步,通過綁定到快捷鍵prefix +m來觸發(fā)鼠標(biāo)模式的開關(guān)。配置如下:


bind m run 'old=$(tmux show -gv mouse);new=""; if [ "$old" = "on" ]; then new="off"; else new="on"; fi; tmux set -g mouse $new; tmux display "mouse: $new"'

注意這是一行配置,細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn),這其實(shí)是一段shell腳本,在鼠標(biāo)模式關(guān)閉的情況下打開它,反之亦然。

狀態(tài)欄的配置

默認(rèn) tmux 的狀態(tài)欄是窗口下方的一段綠色長條,如下圖:

?wx_fmt=png

它分為三個(gè)部分:

  • 最右邊的會(huì)話名字;

  • 中間的窗口列表;

  • 左邊的主機(jī)信息。

這些顯示的信息,以及字體前景色,背景色都是可以靈活配置的。開源的好處就是社區(qū)已經(jīng)有許多成熟的解決方案,這里面最受歡迎的是 powerline。

powerline 用 Python 編寫,安裝使用 Python 的包管理工具pip


pip install powerline-status

此外我們還需要安裝 powerline 使用的字體,可以在 https://github.com/powerline/fonts 下載并安裝。

對 tmux 使用 powerline,只需將如下配置加入 .tmux.conf,prefix + r重新加載即可:


source "{repository_root}/powerline/bindings/tmux/powerline.conf"

其中 repository_root 是 powerline 的安裝路徑。以下是作者安裝 powerline 之后狀態(tài)欄的一個(gè)截屏:

?wx_fmt=png

復(fù)制模式

tmux 初學(xué)者經(jīng)常遇到的一個(gè)問題就是發(fā)現(xiàn)無法使用滾動(dòng)鍵向上滾動(dòng)查看終端的歷史。要做到這一點(diǎn),必須進(jìn)入 tmux 的復(fù)制模式。

按下prefix + [,tmux 就進(jìn)入了復(fù)制模式,再按回車鍵退出。默認(rèn)情況下 tmux 保存 1000 行終端歷史。我們可以通過。


set -g history-limit 10000

調(diào)整歷史記錄大小。

tmux 復(fù)制模式可以使用兩種鍵盤模式,Vi 和 Emacs,默認(rèn)為 Emacs,我們通過:


set -g mode-keys vi

更改為 Vi 的鍵盤模式。在 Vi 模式下,可以通過 jkhl 來上下左右移動(dòng)光標(biāo)。

要復(fù)制文本,我們先進(jìn)入復(fù)制模式,將光標(biāo)移動(dòng)到指定位置,按下空格鍵,然后移動(dòng)光標(biāo)來選擇文本,被選擇的文本會(huì)高亮顯示,最后按回車鍵,表示選擇完畢。

此時(shí)敲入命令tmux list-buffer,我們可以看到 tmux 緩存區(qū)保存的文本,使用tmux paste-buffer或者快捷鍵prefix + ]可以粘貼緩存區(qū)里面的內(nèi)容。

更加高級(jí)的是 tmux 維護(hù)一個(gè)緩沖區(qū)的棧,每復(fù)制一次,tmux 在這個(gè)棧頂部創(chuàng)建了一個(gè)新的緩沖區(qū)?,F(xiàn)在我們可以多復(fù)制幾次文本,然后鍵入命令tmux list-buffers,這時(shí)可以看到一個(gè)緩沖列表。

再敲入命令tmux choose-buffer,tmux 會(huì)創(chuàng)建一個(gè)選擇框,我們可以選擇需要粘貼的文本,然后回車,對應(yīng)文本就插入到了光標(biāo)位置。

vim 用戶可以重新配置這些命令和快捷鍵,讓使用起來更加熟悉。


bind-key -Tcopy-mode-vi 'v' send -X begin-selection bind-key -Tcopy-mode-vi 'y' send -X copy-selection unbind p bind p paste-buffer bind b choose-buffer

現(xiàn)在在復(fù)制模式下可以使用 v 和 y 來選擇文本,使用prefix + p粘貼文本,使用prefix + b來選擇緩沖(將 prefix 設(shè)置成為 ctrl + b 的用戶可自行選擇其他快捷鍵)。

其他配置

為了使 tmux 更好的工作,作者在這里還貼出一些其他的 tmux 基本配置。


set -g default-terminal "screen-256color" # 顏色支持 setw -q -g utf8 on       # utf8 支持 set -q -g status-utf8 on # tmux < 2.2 setw -g automatic-rename on # 自動(dòng)重命名窗口 set -g renumber-windows on  # 關(guān)閉窗口的時(shí)候重新計(jì)算窗口 index set -g display-time 4000 # tmux 消息提示時(shí)間為 4 秒

session 共享和結(jié)對編程

目前很多企業(yè)都在推行結(jié)對編程,兩個(gè)人同一工作臺(tái)前開發(fā)軟件。當(dāng)開發(fā)人員在同一個(gè)辦公室的情況下,實(shí)施結(jié)對編程比較簡單,但是如果開發(fā)人員處于異地的狀態(tài),實(shí)施結(jié)對編程就必須有屏幕共享的軟件。

而 tmux 基于終端的會(huì)話共享可以在即使網(wǎng)絡(luò)狀況不佳的情況下提供良好的結(jié)對編程體驗(yàn)。

我們先來看一下最基本的會(huì)話共享機(jī)制。

假設(shè)有主機(jī) Foo,程序員 A ssh 連接到了這臺(tái)主機(jī),并使用 tmux 開始了會(huì)話 pairing。


tmux new -s pairing

A 想把這個(gè)會(huì)話共享給開發(fā)人員 B,那么他只需要讓 B 登錄同一臺(tái)主機(jī)的同一個(gè)用戶,B 就可以用命令。


tmux attach -t pairing

attach 到同一個(gè)會(huì)話。此時(shí) A 和 B 看到的就是同一會(huì)話的統(tǒng)一窗口,兩人的操作也會(huì)完全同步到各自的屏幕上。

這種方法一個(gè)不那么完美的地方就是 A 和 B 看到的屏幕永遠(yuǎn)是完全一致的,有的時(shí)候我們可能需要讓 A 和 B 能夠同時(shí)做不同的事情,同步窗口的結(jié)果但不必保持窗口顯示的同步。要做到這一點(diǎn),只需要 B 使用命令:


tmux new -s test -t pairing

創(chuàng)建一個(gè)新的會(huì)話并將其加入到 pairing 會(huì)話即可。這樣 A 和 B 看到的窗口結(jié)果是一樣,但是兩人都可以獨(dú)立輸入而不會(huì)互相打擾。

如果想在不共享服務(wù)器的登錄權(quán)限的情況下共享 tmux 會(huì)話,可以嘗試使用 tmate。它是一款 tmux 的 fork,可以在無需登錄主機(jī)的情況下只讀的共享你的 tmux 會(huì)話。詳細(xì)使用讀者可以自行參考相關(guān)網(wǎng)站。

插件管理

tmux 官方支持一系列的插件,可以在 https://github.com/tmux-plugins 找到。注意大部分插件都需要 tmux 1.9 +  版本。

tpm

首先需要提及的是插件管理工具 tpm,它可以用來方便的安裝和刪除插件。安裝 tpm 的方法為


git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

在 ~/.tmux.conf中加入這些配置:


#tmux 插件列表 set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' #將這一行插入 .tmux.conf 最底部 run '~/.tmux/plugins/tpm/tpm'

然后使用prefix + r重新加載 tmux 配置,就可以使用 tmp 了。

當(dāng)在 .tmux.conf 里面加入了新的插件時(shí),我們可以使用prefix + I安裝插件,使用prefix + U更新插件。刪除插件的快捷鍵為prefix + alt + u。

會(huì)話保持:tmux-resurrect

tmux-resurrect 是一款輕量級(jí)的會(huì)話保持插件。它可以用來在服務(wù)器重啟之后重新加載之前保存的 tmux 會(huì)話。

安裝 tmux-resurrect,首先將 set -g @plugin 'tmux-plugins/tmux-resurrect'加入到 .tmux.conf 中,然后按prefix + I安裝。

保存 tmux 會(huì)話的方法為prefix + C-s。保存成功之后會(huì)出現(xiàn)如下提示

?wx_fmt=png

此時(shí)我們?nèi)绻貑C(jī)器,然后打開一個(gè)新的 tmux 會(huì)話,那么可以使用快捷鍵prefix + C-r恢復(fù)保存的會(huì)話信息。

tmuxinator 是另外一款 tmux 的會(huì)話保持工具,它通過編輯和讀取配置文件的形式進(jìn)行會(huì)話的保持。這里留給讀者自行參考。

結(jié)束語

到此為止,本篇關(guān)于 tmux 的介紹就結(jié)束了。正如文章開頭所說,tmux 可以大幅度的提高工作效率,希望讀者都能喜愛上這一款優(yōu)秀的終端管理工具。

大云網(wǎng)官方微信售電那點(diǎn)事兒

責(zé)任編輯:售電衡衡

免責(zé)聲明:本文僅代表作者個(gè)人觀點(diǎn),與本站無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實(shí)相關(guān)內(nèi)容。
我要收藏
個(gè)贊
?
主站蜘蛛池模板: 日韩欧美一二区| 亚洲最大福利视频| 国产不卡影院| 成年视频在线| 中文一级国产特级毛片视频| av在线天堂网| 中国黄色一级毛片| 亚洲一级毛片在线观播放| 亚洲精品亚洲人成在线| 午夜淫片| 欧美性aaa| 毛片在线高清免费观看| 久久日本三级韩国三级| 久久99网站| 国产一区二| 国产东北色老头老太性视频| 成人自拍网站| 91精品在线免费| 亚洲欧美日韩三级| 性视频网站在线| 日本在线免费视频| 男人天堂网在线视频| 精品国产成人综合久久小说| 国产精品免费观看视频播放| yy毛片| 最新福利片v国产片| 亚洲精品国产高清不卡在线| 欧美一级毛片在线看视频| 玖玖国产在线| 韩国美女豪爽一级毛片| 国产高清在线观看视频手机版| 成人国产在线24小时播放视频| 中文字幕在线视频在线看| 亚洲国产精品久久日| 日本高清福利视频在线观看| 看片亚洲| 亚洲成人www| 欧美日韩国产一区二区三区在线观看| 两性色午夜视频免费国产| 国产精品路边足疗店按摩| 真实一级一级一片免费视频|