Tmux

將所有 tmux 回滾寫入文件

  • August 2, 2021

如何將 tmux 會話中的所有回滾寫入文件?

capture-panel 可以抓取目前螢幕,但不能抓取整個回滾。

對於那些尋找簡單答案的人:

  1. 使用prefix+ :,然後輸入capture-pane -S -3000+ Return。(用-3000你想保存的多行替換,或者用-所有行替換。)這會將這些行複製到緩衝區中。
  2. 然後,要將緩衝區保存到文件中,只需再次使用prefix+:並輸入save-buffer filename.txt+ return

(預設PrefixCtrl+ B。)

tmux 1.5 中,該capture-pane命令接受-S-E指定擷取的開始行和結束行;負值可用於指定歷史記錄中的行。將數據放入緩衝區後,您可以使用save-buffer.

這是一個範例綁定(適用於.tmux.conf),它使用文件名提示將其全部包裝起來:

bind-key P command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'

這將擷取(最多)32768 行歷史記錄以及目前顯示的行。從tmux 1.6 開始,如果您的窗格的歷史記錄超過 32Ki 行(通常最多 2Gi 行),您可以使用低至 INT_MIN 的數字。從tmux 2.0 開始,您可以使用capture-pane -S -來表示“從歷史的開頭開始”(即沒有大的、硬編碼的負數)。


注意:保存文件中的行數並不總是等於窗格的歷史限制加上它的高度。

當窗格的歷史緩衝區已滿時,tmux會丟棄最舊的 10% 行,而不是僅丟棄一行。這意味著窗格的有效歷史深度有時會低至其配置限制的 90%。

引用自:https://unix.stackexchange.com/questions/26548