tl; dr
... | tmux loadb -
tmux saveb - | ...
Wyjaśnienie i tło
W tmux wszystkie operacje kopiowania / wklejania przechodzą przez stos buforów, w którym górny (indeks 0) jest ostatnio skopiowanym tekstem i będzie używany do wklejania, gdy jawnie nie zostanie udostępniony indeks bufora -b
. Możesz sprawdzić bieżące bufory za pomocą tmux list-buffers
lub domyślnego skrótu tmux-prefix+ #.
Istnieją dwa sposoby na przesłanie do nowego bufora tmux na górze stosu, set-buffer
pobranie argumentu ciągu i load-buffer
pobranie argumentu pliku. Aby potokować do bufora, którego zwykle chcesz używać load-buffer
ze standardowym wejściem, np .:
print -l **/* | tmux loadb -
Wklejenie tego z powrotem do edytorów i takie jest dość oczywiste ( tmux-prefix+ ]lub cokolwiek, do czego się zobowiązałeś paste-buffer
), jednak dostęp do pasty z wnętrza powłoki nie jest, ponieważ wywołanie paste-buffer
spowoduje zapisanie pasty do standardowego wejścia, co kończy się edycją twojego terminalu bufor, a każda nowa linia w wierszu spowoduje, że powłoka wykona wszystko, co zostało wklejone do tej pory (potencjalnie świetny sposób na zrujnowanie twojego dnia).
Istnieje kilka sposobów podejścia do tego:
tmux pasteb -s ' '
: -s
zastępuje wszystkie zakończenia linii (separatory) dowolnym separatorem, który podasz. Jednak nadal zachowuje się to, paste-buffer
co oznacza, że wklejanie kończy się w buforze edycji terminala, co może być tym, czego chcesz, ale zwykle nie jest.
tmux showb | ...
: show-buffer
drukuje bufor na standardowe wyjście i jest prawie tym, co jest wymagane, ale jak wspomina Chris Johnsen w komentarzach , show-buffer
wykonuje ósemkowe kodowanie niedrukowalnych znaków ASCII i znaków spoza ASCII. To niestety dość często przerwy być denerwujące, a nawet prostych rzeczy jak NUL ciągi lub akcentowane znaki Łacińskiej (np. (W zsh) print -N á | tmux loadb - ; tmux showb
drukuje \303\241\000
).
tmux saveb - | ...
: save-buffer
robi po prostu odwrotność load-buffer
i zapisuje nieprzetworzone bajty niezmodyfikowane do standardowego wejścia, co w większości przypadków jest pożądane. Następnie możesz kontynuować montaż innej rury, i np. przejść | xargs -n1 -I{} ...
do linii technologicznej itp.
tmux show-buffer
wykona kodowanie ósemkowe znaków sterujących C0 i bajtów spoza ASCII (np. akcentowane znaki łacińskie itp.). Możesz użyć,tmux save-buffer -
jeśli chcesz surowych bajtów (zwykle tego właśnie chcesz).