Ответы:
Для поиска в 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.