Respostas:
Para procurar no tmux
buffer 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 tmux
está no controle do teclado copy mode
, Ctrl- sfunciona independentemente da stty ixon
configuração (que eu gosto de ter stty -ixon
para 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.
EDITOR
ou VISUAL
) para o estilo desejado antes de iniciar tmux
.
set-window-option -g mode-keys vi
no 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 P
despeja 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 p
no meu caso. Ctrl+a p
Você pode mudar bind p
para a combinação de teclas preferida.
O primeiro meu não estava funcionando porque eu estava substituindo bind p
em outra linha, então apenas comentei isso.
tmux
(tmux -V
)? Eu acredito que isso foi adicionado na versão 0.9.