тл; д-р
... | tmux loadb -
tmux saveb - | ...
Пояснення та передумови
У tmux вся активність копіювання / вставки проходить через буферний стек, де верхній (індекс 0) є останнім часом скопійованим текстом і буде використовуватися для вставки, коли жоден індекс буфера явно не передбачений -b. Ви можете перевірити поточні буфери за tmux list-buffersдопомогою ярлика tmux-prefix+ або за замовчуванням + #.
Існує два способи підключення до нового буфера tmux у верхній частині стека, set-bufferвзяття аргументу рядка та load-bufferприйняття аргументу файлу. Для передачі в буфер, який зазвичай потрібно використовувати load-bufferзі stdin, наприклад:
print -l **/* | tmux loadb -
Вставлення цього списку в редактори і таке досить очевидно ( tmux-prefix+ ]або все, що ви зв'язані paste-buffer), однак, доступ до пасти всередині оболонки не є, оскільки виклик paste-bufferбуде писати пасту в stdin, що закінчується в редагуванні вашого терміналу буфер і будь-який новий рядок в пасті призведе до того, що оболонка може виконати все, що було вставлено до цього часу (можливо, це чудовий спосіб зіпсувати ваш день).
Є кілька способів підходу до цього:
tmux pasteb -s ' ': -sзамінює всі закінчення рядків (роздільники) на будь-який роздільник, який ви надаєте. Однак ви все ще отримуєте поведінку, paste-bufferщо означає, що паста встає в буфер редагування терміналу, що може бути тим, що ви хочете, але зазвичай це не так.
tmux showb | ...: show-bufferдрукує буфер до stdout, і це майже те, що потрібно, але, як згадує Кріс Джонсен у коментарях , show-bufferвиконує октальне кодування недрукувальних символів ASCII та символів, що не належать до ASCII. Це, на жаль, ламається досить часто, щоб роздратувати, навіть з простими речами, такими як нульові завершені рядки або наголошені латинські символи (наприклад, (у zsh) print -N á | tmux loadb - ; tmux showbвідбитки \303\241\000).
tmux saveb - | ...: save-bufferробить просто реверс load-bufferі записує необроблені байти незмінені в stdin, що саме бажано в більшості випадків. Потім ви можете продовжити збирання іншої труби, наприклад. пройти через | xargs -n1 -I{} ...обробку лінії розумно тощо.
tmux show-bufferзробить восьмеричне кодування контрольних символів C0 та байтів, що не належать до ASCII (наприклад, наголошені латинські символи тощо). Ви можете використовувати,tmux save-buffer -якщо хочете необроблені байти (зазвичай це те, що ви хочете).