tl; dr
-
... | tmux loadb - -
tmux saveb - | ...
Explicação & Antecedentes
No tmux, toda a atividade de copiar / colar passa pelo conjunto de buffers em que a parte superior (índice 0) é o texto copiado mais recentemente e será usado para colar quando nenhum índice de buffer for explicitamente fornecido com -b . Você pode inspecionar os buffers atuais com tmux list-buffers ou o atalho padrão tmux-prefix + # .
Existem duas maneiras de inserir um novo buffer de tmux no topo da pilha, set-buffer tomando um argumento de string, e load-buffer tomando um argumento de arquivo. Para canalizar em um buffer, você geralmente deseja usar load-buffer com stdin, por exemplo:
print -l **/* | tmux loadb -
Colocando isso de volta nos editores e tal é bastante óbvio ( prefixo do tmux + ] ou o que você tiver vinculado paste-buffer ), no entanto, acessando a pasta de dentro do shell não é, porque invocar paste-buffer vai escrever a pasta em stdin, que acaba no buffer de edição do seu terminal, e qualquer nova linha na pasta fará com que o shell execute o que foi colado até agora (potencialmente um ótima maneira de arruinar o seu dia).
Existem algumas maneiras de abordar isso:
-
tmux pasteb -s ' ':-ssubstitui todos os finais de linha (separadores) por qualquer separador que você forneça. No entanto, você ainda obtém o comportamento depaste-buffer, o que significa que a pasta acaba no seu buffer de edição do terminal, que pode ser o que você quer, mas geralmente não é. -
tmux showb | ...:show-bufferimprime o buffer para stdout e é quase o que é necessário, mas como Chris Johnsen menciona nos comentários ,show-bufferexecuta a codificação octal de caracteres ASCII não imprimíveis e caracteres não-ASCII. Isso infelizmente quebra com freqüência suficiente para ser irritante, mesmo com coisas simples, como strings terminadas com nulo ou caracteres latinos acentuados (por exemplo, (em zsh)print -N á | tmux loadb - ; tmux showbimprime31).tmux saveb - | ...0 -
save-buffer:load-buffersimplesmente faz o contrário de| xargs -n1 -I{} ...e grava os bytes brutos não modificados em stdin, o que é desejado na maioria dos casos. Você poderia então continuar a montar outro tubo e, por exemplo. passar %code% para linha de processo, etc.