답변:
이것은 history-limit
사용자가 설정 한 값에 따라 다릅니다 .tmux.conf
. 기본값은 2000입니다. 더 많이 캡처하려면 라인 수를 명시 적으로 설정해야합니다.
전체 스크롤 백을 캡처하려면 복사 모드로 들어가서 전체 스크롤 백을 선택하여 버퍼에 넣고 파일에 붙여 넣습니다.
이 작업을 수행하는 방법은 mode-keys
원하는 옵션, vi 또는 emacs 에 따라 다릅니다 . man tmux
각 키를 설명하는 유용한 표가 있습니다.
이것을 .tmux.conf
단순화하기 위해 다음과 같은 것들이 있습니다 .
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
전체 스크롤 백을 캡처하는 프로세스는 다음과 같습니다.
PrefixEsc : 복사 모드로 들어가기
v : 시각적 선택을 시작합니다 (이미 화면 하단에 있다고 가정)
gg : 스크롤 백의 모든 것을 캡처
y : 버퍼에 넣다
Prefixc : 다른 TMUX 창 열기
vim scrollback.txt
i : vim에서 삽입 모드로 들어갑니다
Prefixp : 파일에 붙여 넣기
유용한 버퍼를 사용하여 버퍼를 임시 파일xsel
로 복사 하는 방법을 설명하는 답변도 있습니다.
:set paste
vim에서 사용하는 경우 vim은 자동 들여 쓰기 또는 삽입 기반 키 바인딩 추가를 무시합니다.
.tmux.conf
...
간단한 답을 찾는 분들, 그냥 사용하십시오 prefix+를 :, 다음 입력 capture-pane -S -3000
+ return(교체 3000
저장하려는 그러나 많은 선.)이 복사 버퍼에 그 라인을.
그런 다음, 바로 사용, 파일에 버퍼를 저장 prefix+ :다시와 입력 save-buffer filename.txt
+ return교체, filename
당신이 원하는 무엇이든 함께.
(기본값 prefix은 ctrl + b입니다.)
save-buffer filename.txt
파일 /
을 pwd
(현재 디렉토리)가 아닌에 저장하는 것 같습니다 . 대신, 나는 절대 파일 경로를 제공했고 그것은 매력처럼 작동했다
로 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 %만큼 낮음을 의미합니다.
tmux server-info | head -1
당신의 버전을 볼 수 있습니다. tmux -V
tmux * 1.4 이상에서 작동합니다.
[PrefixKey] :
tmux 명령 줄로 이동하여 전체 줄을 붙여 넣으십시오. 그런 다음 [Prefix] P
대문자 P를 수행하면 좋습니다.
@jasonwryan의 답변 과 약간 다른 것처럼 보이는 표준 키 바인딩이 있었고 구성에서 아무것도 변경하지 않았습니다.
아래는 나를 위해 일한 요리법입니다. tmux 구성을 변경하지 않고 스크롤 백 중 일부를 빠르게 복사하려는 경우 유용 할 수 있습니다.
PrefixCtrl+b내 TMTM에서 == (tmux 1.6, 데비안 7).
tmux 접두사 키를 사용하는 대신 명령 행에서 실행할 수있는 것을 원하는 경우 다음을 실행하십시오.
tmux capture-pane -pS -1000000
당신이 그것을 실행하고 아무것도하지 않는 것 같습니다, 그것은 화면에 방금 표시된 것을 정확하게 출력하기 때문에 동일하게 보입니다.
물론 파일로 파이프 할 수도 있습니다.
tmux capture-pane -pS -1000000 > file.out
tmux
매뉴얼 페이지를 참조하여 capture-pane
더 많은 작업을 검색하십시오 (예 : 색상을 유지하려는 경우 이스케이프 시퀀스 캡처 또는 여러 줄이 새 줄을 포함하지 않을 때 결합할지 여부 지정).
이것을 가능하게하는 tmux 플러그인이 있습니다 :
https://github.com/tmux-plugins/tmux-logging
설치 한 후를 사용하여 전체 스크롤 백을 저장하십시오 prefix + alt-shift-p
.
tmux 세션의 모든 스크롤 백을 파일에 어떻게 쓸 수 있습니까?
~ / .tmux.conf 에서 이것을 사용 하고 이제 실행중인 쉘을 종료하면 창 출력이 고유 로그 파일에 저장됩니다.
set -g remain-on-exit
set-hook pane-died 'capture-pane -S - -E - ; save-buffer "$HOME/logs/tmux/tmux-saved.#{host_short}-#{session_id}:#{window_id}:#{pane_id}-#{pane_pid}-#{client_activity}.log"; delete-buffer; kill-pane'