тл; д-р
... | 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 -
якщо хочете необроблені байти (зазвичай це те, що ви хочете).