Bir tmux oturumundaki tüm geri izleme dosyalarını bir dosyaya nasıl yazabilirim?
capture-panel
Geçerli ekranı kaplayabilir, ancak geri kaydırma işleminin tamamını değil.
Bir tmux oturumundaki tüm geri izleme dosyalarını bir dosyaya nasıl yazabilirim?
capture-panel
Geçerli ekranı kaplayabilir, ancak geri kaydırma işleminin tamamını değil.
Yanıtlar:
Bu history-limit
, sizin için belirlediğiniz değere bağlıdır .tmux.conf
- varsayılan değer 2000'dir; Daha fazla fotoğraf çekmek istiyorsanız, satır sayısını açıkça ayarlamanız gerekir.
Geri kaydırma işleminin tamamını yakalamak için, kopya moduna girin, geri kaydırma işleminin tamamını seçin ve arabelleğe kopyalayın, ardından dosyanızı yapıştırın.
Bunu nasıl başaracağınız mode-keys
, tercih ettiğiniz seçeneğe, vi veya emacs'e bağlı olacaktır . man tmux
ilgili tuşları tanımlayan faydalı bir tabloya sahiptir.
Bunu .tmux.conf
basitleştirmek için içimde aşağıdakiler var :
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
Tam kaydırma işlemini yakalamak için işlem şöyledir:
PrefixEsc : kopyalama moduna girmek için
v : görsel seçime başlamak için (ekranın altında olduğunuzu varsayarak)
gg : geri kaydırmadaki her şeyi yakalamak için
y : Tamponun içine yerleştirmek için
Prefixc : başka bir tmux penceresi aç
vim scrollback.txt
i : vim'deki ekleme moduna gir
Prefixp : dosyaya yapıştır
Tamponun,xsel
bunun yararlı olabileceği geçici bir dosyaya nasıl kopyalanacağını açıklayan bir cevap da var .
:set paste
Vim'de kullanırsanız , vim otomatik girintiler veya herhangi bir insert tabanlı keybinder eklemeyi göz ardı eder.
.tmux.conf
...
Basit bir cevap arayanlar için, sadece prefix+ tuşlarını kullanın :, sonra capture-pane -S -3000
+ yazın return( 3000
kaydetmek istediğiniz çok satırla değiştirin .) Bu satırları ara belleğe kopyalar.
Sonra, sadece kullanmak, bir dosyaya tampon kaydetmek için prefix+ :tekrar ve yazın save-buffer filename.txt
+ returnyerine filename
dilediğiniz ile.
(Varsayılan prefixolarak ctrl + b.)
save-buffer filename.txt
Dosyayı /
değil pwd
(mevcut dizin) içine kaydediyor gibi görünüyor . Bunun yerine, mutlak bir dosya yolu
İle tmux 1.5, capture-pane
komut kabul -S
ve -E
yakalama başlangıç ve bitiş çizgileri belirtmek için; negatif değerler geçmişe ait satırları belirtmek için kullanılabilir. Verileri bir arabellekte aldıktan sonra, onu kaydedebilirsiniz save-buffer
.
İşte her .tmux.conf
şeyi dosya adı için bir bilgi istemi ile tamamlayan (uygun ) bir bağlayıcı :
bind-key P command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'
Bu (en fazla) 32768 tarih satırını ve şu anda görüntülenen satırları yakalar. İle başlayarak tmux senin bölmesi 32Ki hatları (genellikle 2Gi hatlarına kadar) daha derin bir geçmişi vardır eğer 1.6, sen INT_MIN aşağı numaralarını kullanabilirsiniz. Tmux 2.0'dan başlayarak, capture-pane -S -
“tarihin başlangıcından başla” (yani büyük, kodlanmış negatif sayılar yok) anlamına gelir.
Not: Kaydedilen dosyadaki satır sayısı her zaman bölmenin geçmiş sınırına ve yüksekliğine eşit olmaz.
Bir bölmenin geçmiş arabelleği dolduğunda, tmux , yalnızca bir satırı atmak yerine satırların en eski% 10'unu atar. Bu, bölmenin etkin tarih derinliğinin bazen yapılandırılan limitinin% 90'ı kadar düşük olacağı anlamına gelir.
tmux server-info | head -1
versiyonunuzu görmek için kullanabilirsiniz . tmux -V
tmux * 1.4 ve sonrasında çalışır.
[PrefixKey] :
, tmux komut satırına ulaşmak için bir işlem yapın ve ardından tüm satırı yapıştırın, o zaman sadece [Prefix] P
büyük P olur ve gitmeniz iyi olur.
@ Jasonwryan'ın cevabından biraz farklı gibi görünen ve config dosyasındaki hiçbir şeyi değiştirmeyen standart anahtar bağlantılarım vardı .
Aşağıda benim için çalıştı tarifi. Belki tmux config'de herhangi bir değişiklik yapmak istemiyorsanız ve sadece geri kaydırma işleminin bir kısmını hızlıca kopyalamak istiyorsanız, onu faydalı bulacaksınız.
Prefix== Ctrl+btmux'umda (tmux 1.6, debian 7).
Komut satırından çalıştırabileceğiniz bir şey istiyorsanız (tmux önek tuşlarınızı kullanmak yerine), çalıştırmayı deneyin:
tmux capture-pane -pS -1000000
Eğer onu çalıştırırsanız ve hiçbir şey yapmıyor gibi göründüğü için, tam olarak ekranınızdakileri gösterdiği için aynı görünüyor.
Elbette bir dosyaya da aktarabilirsiniz:
tmux capture-pane -pS -1000000 > file.out
tmux
Kılavuz sayfasına bakın ve capture-pane
yapabileceğiniz daha fazla şey için arama yapın (rengi korumak istemeniz durumunda kaçış dizilerini yakalama veya yeni bir çizgi içermediğinde birden fazla görsel çizginin birleştirilmesini isteyip istemediğinizi belirtme gibi)
İşte bunu sağlayan bir tmux eklentisi:
https://github.com/tmux-plugins/tmux-logging
Kurduktan sonra tüm kaydırma izini ile kaydedin prefix + alt-shift-p
.
Bir tmux oturumundaki tüm geri izleme dosyalarını bir dosyaya nasıl yazabilirim?
Bunu ~ / .tmux.conf dosyasında kullanıyorum ve şimdi çalışan kabuğumdan çıktığımda, bölme çıktısı benzersiz bir günlük dosyasına kaydedildi:
set -g remain-on-exit
set-hook pane-died 'capture-pane -S - -E - ; save-buffer "$HOME/logs/tmux/tmux-saved.#{host_short}-#{session_id}:#{window_id}:#{pane_id}-#{pane_pid}-#{client_activity}.log"; delete-buffer; kill-pane'