tl; dr
... | tmux loadb -
tmux saveb - | ...
Explicação e Antecedentes
No tmux, todas as atividades de copiar / colar passam pela pilha de buffers, onde o topo (índice 0) é o texto copiado mais recentemente e será usado para colar quando nenhum índice de buffer for explicitamente fornecido -b
. Você pode inspecionar os buffers atuais com tmux list-buffers
ou o atalho padrão tmux-prefix+ #.
Existem duas maneiras de canalizar para um novo buffer tmux no topo da pilha, set-buffer
usando um argumento de string e load-buffer
usando um argumento de arquivo. Para canalizar para um buffer que você geralmente deseja usar load-buffer
com stdin, por exemplo:
print -l **/* | tmux loadb -
Colar isso de volta nos editores e isso é bastante óbvio ( tmux-prefix+ ]ou o que você quiser paste-buffer
), no entanto, acessar a pasta de dentro do shell não é, porque a chamada paste-buffer
gravará a pasta no stdin, que termina na edição do seu terminal buffer e qualquer nova linha na pasta fará com que o shell execute o que foi colado até agora (potencialmente uma ótima maneira de arruinar o seu dia).
Existem algumas maneiras de abordar isso:
tmux pasteb -s ' '
: -s
substitui todas as terminações de linha (separadores) por qualquer separador que você fornecer. No entanto, você ainda obtém o comportamento, o paste-buffer
que significa que a pasta acaba no buffer de edição do terminal, que pode ser o que você deseja, mas geralmente não é.
tmux showb | ...
: show-buffer
imprime o buffer em stdout e é quase o necessário, mas, como Chris Johnsen menciona nos comentários , show-buffer
executa a codificação octal de caracteres ASCII não imprimíveis e caracteres não ASCII. Infelizmente, isso quebra com freqüência suficiente para ser irritante, com coisas simples, como seqüências terminadas nulas ou caracteres latinos acentuados (por exemplo, print -N á | tmux loadb - ; tmux showb
impressões em zsh \303\241\000
).
tmux saveb - | ...
: save-buffer
faz o inverso load-buffer
e grava os bytes brutos sem modificação no stdin, o que é desejado na maioria dos casos. Você poderia então continuar montando outro tubo, e por exemplo. passar | xargs -n1 -I{} ...
para linha de processo sábio, etc.
tmux show-buffer
fará codificação octal de caracteres de controle C0 e bytes não ASCII (por exemplo, caracteres latinos acentuados, etc.). Você pode usartmux save-buffer -
se quiser os bytes brutos (geralmente é o que você deseja).