Відповіді:
Для пошуку в tmuxбуфері історії для поточного вікна натисніть Ctrl- b [для входу copy mode.
Якщо ви використовуєте прив'язки клавіш emacs (за замовчуванням), натисніть Ctrl- sа потім введіть рядок для пошуку та натисніть Enter. Натисніть, nщоб знову знайти той самий рядок. Натисніть Shift- nдля зворотного пошуку. Натисніть Escapeдвічі для виходу copy mode. Ви можете використовувати Ctrl- rдля пошуку у зворотному напрямку. Зауважте, що оскільки tmuxкерує клавіатурою в copy mode, Ctrl- sпрацює незалежно від stty ixonналаштування (яке я хотів би мати, stty -ixonщоб включити пошук вперед в Bash).
Якщо ви використовуєте прив'язки клавіш vi ( Ctrl- b:set-window-option -g mode-keys vi), натисніть, /а потім введіть рядок для пошуку та натисніть Enter. Натисніть, nщоб знову знайти той самий рядок. Натисніть Shift- nдля зворотного пошуку, як у режимі emacs. Натисніть qдвічі для виходу copy mode. Ви можете використовувати ?для пошуку у зворотному напрямку.
Якщо ви хочете перейти до вікна на основі чогось відображеного в ньому (сюди також входять назви вікон та заголовки, але не історія), (починаючи з відкритого більш ніж одного вікна) натисніть Ctrl- b fпотім введіть рядок для пошуку та натисніть Enter. Ви перейдете у вікно, яке містить цей текст, якщо він знайдений. Якщо збігається більше одного вікна, ви побачите список, з якого можна вибрати.
EDITORабо VISUAL) для потрібного стилю tmux.
set-window-option -g mode-keys viпо моєму .tmux.conf. Але мені було цікаво альтернативу змінної середовища, і я не зміг змусити її працювати. Це змінна середовище оболонки або змінна середовища tmux, яку потрібно встановити у файлі conf?
VISUAL=vi tmux
Увійдіть в режим копіювання і почніть пошук за один раз
bind-key / copy-mode \; send-key ?
дозволяє робити лише:
Ctrl + B /
і почніть вводити пошуковий термін.
Завантажте файл та використовуйте vim
Коли все більше залучається, я просто хочу скористатися належним редактором: https://unix.stackexchange.com/questions/26548/write-all-tmux-scrollback-to-a-file
bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
Тепер Pскидає буфер у файл, а потім я просто:
vim /tmp/tmux
Випробувано в tmux 2.6.
/tmp/tmux)?
Ви можете використовувати vim для перегляду / редагування / пошуку / збереження журналу екрана, складання журналу в кожному запиті bash:
tmux capture-pane -pS -1000000 |
vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1" -
Відрегулюйте регулярний вираз відповідно до вашого підказка, використовуйте чотири зворотні косої риски для кожного зворотного косого кута.
Або поставте функцію vim у ~ / .vimrc:
command! MoshFoldTmuxLog :setl fen fdm=expr
\ fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1
І в ~ / .bashrc додайте дату до підказки, якщо у вас є багато журналів, для яких слід шукати. напр
PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'
Ось таке рішення я знайшов.
Ви також можете змінити цільовий шлях та ім'я файлу:
# Save screen content to file
bind p command-prompt -p 'Save history to:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'
Після завантаження конфігураційного файлу tmux ви можете натиснути prefix pв моєму випадку Ctrl+a p
Ви можете змінити bind pбажану комбінацію клавіш.
Спочатку моя не працювала, тому що я перезаписався bind pв інший рядок, тому я просто прокоментував це.
tmux(tmux -V)? Я вважаю, що це було додано у версії 0.9.