Як я можу здійснювати пошук у вихідному буфері оболонки tmux?


180

Я не можу змусити це працювати. Як я можу шукати буфер оболонки tmux?


1
Яка версія tmux( tmux -V)? Я вважаю, що це було додано у версії 0.9.
Денніс Вільямсон

@Dennis це 1.3-1
NES

1
Пошук версії з tmux -Vроботами лише в пізніших версіях. В Ubuntu / Debian ви можете зробити: dpkg -l | grep tmux
Niels Bom

Відповіді:


275

пошук режиму копіювання

Для пошуку в 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. Ви перейдете у вікно, яке містить цей текст, якщо він знайдений. Якщо збігається більше одного вікна, ви побачите список, з якого можна вибрати.


3
Як я можу встановити стиль палітурки? (emacs vs vi)
Daniel Que

2
@DanielQue: Погляньте на сторінку tmux man і знайдіть "клавіші режиму" та "клавіші стану". Це підкоманди, які дозволяють встановити стиль прив’язки. Крім того, перед запуском може бути простіше встановити змінну середовища ( EDITORабо VISUAL) для потрібного стилю tmux.
Денніс Вільямсон

6
Спасибі, я отримав його на роботу з set-window-option -g mode-keys viпо моєму .tmux.conf. Але мені було цікаво альтернативу змінної середовища, і я не зміг змусити її працювати. Це змінна середовище оболонки або змінна середовища tmux, яку потрібно встановити у файлі conf?
Даніель Кві

2
@DanielQue: змінна середовища оболонки. Його потрібно буде експортувати або помістити в оточення tmux так:VISUAL=vi tmux
Денніс Вільямсон,

1
Також зауважте, що пошуку по регулярному вираженню ще немає, ось на ньому відкрите питання sourceforge.net/p/tmux/tickets/9
Ілля Лінн

7

Увійдіть в режим копіювання і почніть пошук за один раз

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)?
Peeyush Kushwaha

@PeeyushKushwaha вибачте, але мій tmux fu - це не так добре, мені доведеться google, повідомте мене, якщо ви це дізнаєтесь.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1

Ви можете використовувати 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 -'         

0

Ось таке рішення я знайшов.

Ви також можете змінити цільовий шлях та ім'я файлу:

# 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в інший рядок, тому я просто прокоментував це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.