Як я можу записати весь прокрутку у сесії tmux у файл?
capture-panel
може захопити поточний екран, але не весь прокрутка.
Як я можу записати весь прокрутку у сесії tmux у файл?
capture-panel
може захопити поточний екран, але не весь прокрутка.
Відповіді:
Це залежить від значення, 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, ви можете використовувати цифри аж до INT_MIN, якщо на вашій панелі є історія, глибша за 32Ki рядків (як правило, до 2Gi рядків). Починаючи з 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, і нічого не змінювали в config.
Нижче наведено рецепт, який працював на мене. Можливо, вам це стане в нагоді, якщо ви не хочете вносити жодних змін у конфігурацію tmux і просто хочете швидко скопіювати частину прокрутки.
Prefix== Ctrl+bв моєму tmux (tmux 1.6, debian 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'