tl; dr
... | tmux loadb -
tmux saveb - | ...
Erklärung & Hintergrund
In tmux durchlaufen alle Kopier- / Einfügevorgänge den Pufferstapel, wobei der oberste (Index 0) der zuletzt kopierte Text ist und zum Einfügen verwendet wird, wenn kein Pufferindex explizit bereitgestellt wird -b
. Sie können die aktuellen Puffer mit tmux list-buffers
oder der Standardverknüpfung tmux-prefix+ anzeigen #.
Es gibt zwei Möglichkeiten, in einen neuen tmux-Puffer oben im Stapel zu leiten, set-buffer
ein String-Argument und load-buffer
ein Datei-Argument zu übernehmen. Um in einen Puffer zu load-buffer
leiten, möchten Sie normalerweise mit stdin arbeiten, zB:
print -l **/* | tmux loadb -
Das Einfügen in Editoren und Ähnliches ist ziemlich offensichtlich ( tmux-prefix+ ]oder was auch immer Sie gebunden haben paste-buffer
), der Zugriff auf die Paste aus der Shell heraus jedoch nicht, da das Aufrufen paste-buffer
die Paste in stdin schreibt, was in der Bearbeitung Ihres Terminals endet Puffer, und jede neue Zeile in der Paste bewirkt, dass die Shell das ausführt, was bisher eingefügt wurde (möglicherweise eine großartige Möglichkeit, Ihren Tag zu ruinieren).
Es gibt verschiedene Möglichkeiten, dies zu erreichen:
tmux pasteb -s ' '
: -s
Ersetzt alle Zeilenenden (Trennzeichen) durch das von Ihnen angegebene Trennzeichen. Sie erhalten jedoch immer noch das Verhalten, paste-buffer
das bedeutet, dass die Paste in Ihrem Terminal-Bearbeitungspuffer landet. Dies kann das sein, was Sie wollen, ist es aber normalerweise nicht.
tmux showb | ...
: show-buffer
druckt den Puffer auf stdout und ist fast erforderlich, aber wie Chris Johnsen in den Kommentaren erwähnt , show-buffer
führt er eine oktale Codierung von nicht druckbaren ASCII-Zeichen und Nicht-ASCII-Zeichen durch. Dies unterbricht leider oft genug, um ärgerlich zu sein, selbst bei einfachen Dingen wie nullterminierten Zeichenfolgen oder lateinischen Zeichen mit Akzent (z. B. (in zsh) print -N á | tmux loadb - ; tmux showb
-Prints \303\241\000
).
tmux saveb - | ...
: save-buffer
macht einfach das Gegenteil von load-buffer
und schreibt die rohen Bytes unverändert in stdin, was in den meisten Fällen erwünscht ist. Sie könnten dann weiter ein anderes Rohr montieren, und z. durchlaufen | xargs -n1 -I{} ...
, um zeilenweise zu verarbeiten, usw.
tmux show-buffer
Die oktale Codierung von C0-Steuerzeichen und Nicht-ASCII-Bytes (z. B. lateinische Zeichen mit Akzent usw.) wird durchgeführt. Sie können verwenden,tmux save-buffer -
wenn Sie die unformatierten Bytes möchten (dies ist normalerweise das, was Sie möchten).