tl; dr
... | tmux loadb -
tmux saveb - | ...
Penjelasan & Latar Belakang
Dalam tmux, semua aktivitas salin / tempel melewati tumpukan buffer di mana bagian atas (indeks 0) adalah teks yang paling baru disalin dan akan digunakan untuk menempel ketika tidak ada indeks buffer yang secara eksplisit disediakan -b
. Anda dapat memeriksa buffer saat ini dengantmux list-buffers
atau cara pintas default tmux-prefix+ #.
Ada dua cara untuk menyalurkan ke buffer tmux baru di bagian atas stack, set-buffer
mengambil argumen string, dan load-buffer
mengambil argumen file. Untuk menyalurkan ke buffer yang biasanya ingin Anda gunakanload-buffer
dengan stdin, mis .:
print -l **/* | tmux loadb -
Menempelkan ini kembali ke editor dan itu cukup jelas ( tmux-prefix+] atau apa pun yang Anda terikat paste-buffer
), namun, mengakses pasta dari dalam shell tidak, karena memohon paste-buffer
akan menulis paste ke stdin, yang berakhir di sunting terminal Anda buffer, dan baris baru apa pun dalam tempel akan menyebabkan shell mengeksekusi apa pun yang telah ditempel sejauh ini (berpotensi cara yang bagus untuk merusak hari Anda).
Ada beberapa cara untuk mendekati ini:
tmux pasteb -s ' '
: -s
mengganti semua ujung garis (pemisah) dengan pemisah apa pun yang Anda berikan. Namun Anda masih mendapatkan perilaku paste-buffer
yang berarti bahwa pasta berakhir di buffer edit terminal Anda, yang mungkin sesuai dengan yang Anda inginkan, tetapi biasanya tidak.
tmux showb | ...
: show-buffer
mencetak buffer ke stdout, dan hampir apa yang diperlukan, tetapi seperti yang disebutkan dalam komentar ,show-buffer
melakukan pengkodean oktal dari karakter ASCII yang tidak dapat dicetak dan karakter non-ASCII. Sayangnya, istirahat ini cukup sering menjengkelkan, bahkan dengan hal-hal sederhana seperti string yang diakhiri nol atau karakter latin beraksen (mis. (Dalam zsh) print -N á | tmux loadb - ; tmux showb
cetakan \303\241\000
).
tmux saveb - | ...
: save-buffer
tidak hanya kebalikan dari load-buffer
dan menulis byte mentah yang tidak dimodifikasi menjadi stdin, yang merupakan apa yang diinginkan dalam banyak kasus. Anda kemudian dapat terus merakit pipa lain, dan misalnya. melewati | xargs -n1 -I{} ...
garis proses bijaksana, dll.
tmux show-buffer
akan melakukan pengkodean oktal dari karakter kontrol C0 dan byte non-ASCII (mis. karakter Latin beraksen, dll.). Anda dapat menggunakantmux save-buffer -
jika Anda menginginkan byte mentah (ini biasanya yang Anda inginkan).