在復(fù)制模式下移動
當(dāng)進(jìn)行測試或者查看日志文件時,由于內(nèi)容較多,往往需要進(jìn)行上下翻滾查找。
按下 PREFIX [ 進(jìn)入復(fù)制模式,然后可以在屏幕上使用方向鍵進(jìn)行移動了。要想使用 Vim 的各種移動鍵進(jìn)行移動,可以在 .tmux.conf 中配置:
setw -g mode-keys vi
使用 PREFIX [ 后進(jìn)入的復(fù)制模板,相當(dāng)于 Vim 中使用 ESC 進(jìn)入的 Normal 模式,在其中可以用 hjkl,wbfF, Ctrl-b 等進(jìn)行移動,使用 ?/ 等進(jìn)行查詢等。
退出復(fù)制模式默認(rèn)使用回車鍵。
復(fù)制粘貼文本
在復(fù)制模式下,按下空格鍵進(jìn)入文本選取狀態(tài),然后使用 Vim 的移動命令進(jìn)行移動選取,當(dāng)按下回車鍵后,所選取的文本將被復(fù)制到一個粘貼緩沖區(qū)。
在復(fù)制模式下,按 PREFIX ] 將當(dāng)前粘貼緩沖區(qū)中的內(nèi)容粘貼出來。
獲取窗格內(nèi)容
將一個窗格里可見的所有內(nèi)容復(fù)制到一個粘貼緩沖區(qū)中:先按 PREFIX : 進(jìn)入命令模式,然后運行 capture-pane 命令。
顯示和保存緩沖區(qū)
顯示緩沖區(qū)的內(nèi)容:
$ tmux show-buffer
使用 save-buffer 命令將緩沖區(qū)中的內(nèi)容保存到一個文件中,例如,可以先將一個窗格中的所有內(nèi)容復(fù)制到緩沖區(qū),然后將緩沖區(qū)的內(nèi)容保存到文件中:
$ tmux capture-pane && tmux save-buffer buffer.txt
或者在 tmux 會話的命令模式下:
:capture-pane;save-buffer buffer.txt
可以將這兩條命令映射成一個快捷鍵。
使用多個緩沖區(qū)
tmux 的緩沖區(qū)和系統(tǒng)的不同,它的緩沖區(qū)類似一個堆棧,新復(fù)制的內(nèi)容在堆棧的頂部,而不會直接覆蓋已存在的緩沖區(qū)內(nèi)容。
當(dāng)按下 PREFIX ] 時,默認(rèn)問題粘貼最頂部的緩沖區(qū)的內(nèi)容,即緩沖區(qū) 0 的內(nèi)容,也可以在命令模式下通過 choose-buffer 命令選取要粘貼的緩沖區(qū),選取后按回車鍵完成粘貼。
這些緩沖區(qū)內(nèi)容在不同的會話間都可以共享。
重新綁定復(fù)制和粘貼鍵
將復(fù)制粘貼操作參照 Vim 的模式進(jìn)行改造,如按 ESC 鍵切換復(fù)制模式,使用 y 進(jìn)行復(fù)制,使用 v 開始選取文本,使用 p 進(jìn)行粘貼:
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection
在 Linux 上使用系統(tǒng)粘貼板
在 Ubunut 上,通過 xclip 工具可以將 tmux 緩沖區(qū)與系統(tǒng)的粘貼板整合起來,從而使得程序間的文本復(fù)制粘貼更加容易。
安裝 xclip :
$ sudo apt-get install xclip
然后可以將 tmux 的 save-buffer 和 set-buffer 命令與 xclip 結(jié)合起來。
將當(dāng)前緩沖區(qū)的內(nèi)容復(fù)制到系統(tǒng)的粘貼板,可以在 .tmux.conf 文件中進(jìn)行綁定:
bind C-c display "Copied" \; run "tmux save-buffer - | xclip -i -sel clipboard"
將系統(tǒng)粘貼板中的內(nèi)容粘貼到當(dāng)前位置:
bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
快捷鍵
快捷鍵 | 描述
----------|
PjREFIX [ | 進(jìn)入復(fù)制模式
PREFIX ] | 粘貼當(dāng)前緩沖區(qū)中的內(nèi)容
PREFIX = | 先列出所有粘貼緩沖區(qū)的內(nèi)容,然后粘貼選中的緩沖區(qū)內(nèi)容
命令
命令 | 描述
-----------------------|
show-buffer | 顯示當(dāng)前緩沖區(qū)的內(nèi)容
capture-pane | 將當(dāng)前窗格中的所有可見內(nèi)容得到最頂部的緩沖區(qū)
list-buffers | 列出所有緩沖區(qū)的內(nèi)容
choose-buffer | 列出所有緩沖區(qū),選取其中一個進(jìn)行粘貼
save-buffer [filename] | 將緩沖區(qū)的內(nèi)容保存到文件
參考資源: