Respostas:
Para procurar no tmuxbuffer do histórico a janela atual, pressione Ctrl- b [para entrar copy mode.
Se você estiver usando as combinações de teclas emacs (o padrão), pressione Ctrl- se digite a string a ser pesquisada e pressione Enter. Pressione npara procurar a mesma sequência novamente. Pressione Shift- npara pesquisa reversa. Pressione Escapeduas vezes para sair copy mode. Você pode usar Ctrl- rpara pesquisar na direção inversa. Observe que, uma vez que tmuxestá no controle do teclado copy mode, Ctrl- sfunciona independentemente da stty ixonconfiguração (que eu gosto de ter stty -ixonpara ativar as pesquisas avançadas no Bash).
Se você estiver usando as combinações de teclas vi ( Ctrl- b:set-window-option -g mode-keys vi), pressione /e digite a sequência a ser pesquisada e pressione Enter. Pressione npara procurar a mesma sequência novamente. Pressione Shift- npara pesquisa reversa como no modo emacs. Pressione qduas vezes para sair copy mode. Você pode usar ?para pesquisar na direção inversa.
Se você deseja alternar para uma janela com base em algo exibido nela (isso também inclui nomes e títulos de janelas, mas não histórico), (começando com mais de uma janela aberta), pressione Ctrl- b fe digite a sequência a ser pesquisada e pressionada Enter. Você será alternado para uma janela que contém esse texto, se ele for encontrado. Se mais de uma janela corresponder, você verá uma lista para selecionar.
EDITORou VISUAL) para o estilo desejado antes de iniciar tmux.
set-window-option -g mode-keys vino meu .tmux.conf. Mas eu estava curioso sobre a alternativa da variável de ambiente e não consegui fazê-la funcionar. É uma variável de ambiente do shell ou uma variável de ambiente tmux que deve ser configurada no arquivo conf?
VISUAL=vi tmux
Entre no modo de cópia e comece a pesquisar de uma só vez
bind-key / copy-mode \; send-key ?
permite que você faça exatamente:
Ctrl + B /
e comece a digitar o termo de pesquisa.
Despejar em um arquivo e usar vim
Quando as coisas ficam mais envolvidas, eu só quero usar um editor adequado: 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
Agora Pdespeja o buffer em um arquivo, e então eu apenas:
vim /tmp/tmux
Testado no tmux 2.6.
/tmp/tmux)?
Você pode usar o vim para visualizar / editar / pesquisar / salvar o log de tela, dobre o log em cada prompt do bash:
tmux capture-pane -pS -1000000 |
vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1" -
Ajuste a regex de acordo com o seu prompt, use quatro barras invertidas para cada barra invertida no regex.
Ou coloque a função vim em ~ / .vimrc:
command! MoshFoldTmuxLog :setl fen fdm=expr
\ fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1
E em ~ / .bashrc, adicione data ao prompt, se você tiver muitos logs para pesquisar. por exemplo
PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'
Aqui está uma solução que encontrei.
Você também pode modificar o caminho de destino e o nome do arquivo:
# 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'
Após recarregar o arquivo de configuração do tmux, você pode pressionar prefix pno meu caso. Ctrl+a p
Você pode mudar bind ppara a combinação de teclas preferida.
O primeiro meu não estava funcionando porque eu estava substituindo bind pem outra linha, então apenas comentei isso.
tmux(tmux -V)? Eu acredito que isso foi adicionado na versão 0.9.