Bir tmux kabuğunun çıktı tamponu içinde nasıl arama yapabilirim?


180

Bunu işe alamıyorum. Bir tmux kabuğunun tamponunu nasıl arayabilirim?


1
Hangi sürümü tmux( tmux -V)? Bunun 0.9 sürümünde eklendiğine inanıyorum.
Dennis Williamson

@Dennis, 1.3-1
NES,

1
Sürümü bulmak tmux -Vsadece sonraki sürümlerde işe yarar. Ubuntu / Debian'da yapabilecekleriniz: dpkg -l | grep tmux
Niels Bom

Yanıtlar:


275

kopyalama modu araması

tmuxGeçerli pencerenin geçmiş arabelleğini aramak için girmek için Ctrl- tuşuna basın .b [copy mode

Eğer emacs tuş bağları (varsayılan) basın kullanıyorsanız Ctrl- so zaman için basın aramak için dizeyi yazın Enter. nAynı dizgiyi tekrar aramak için basın . Geriye doğru arama yapmak için Shift- düğmesine basın n. Çıkmak için Escapeiki kez basın copy mode. Ctrl- ' ryi ters yönde aramak için kullanabilirsiniz . tmuxKlavyenin kontrolünün kontrol altında olduğundan beri copy mode, Ctrl- ayardan sbağımsız olarak çalışır stty ixon( stty -ixonBash'de ileri aramaları etkinleştirmek için sahip olmayı severim ).

Vi tuşunu bağlama kullanıyorsanız ( Ctrl- b:set-window-option -g mode-keys vi), tuşuna basın, /sonra aranacak dizeyi yazın ve tuşuna basın Enter. nAynı dizgiyi tekrar aramak için basın . Emacs modunda olduğu gibi geriye doğru arama yapmak için Shift- düğmesine basın n. Çıkmak için qiki kez basın copy mode. ?Ters yönde aramak için kullanabilirsiniz .

bulmak pencere

İçinde görüntülenen bir şeye göre bir pencereye geçmek istiyorsanız (bu, aynı zamanda pencere adlarını ve başlıkları da içerir, ancak tarihçeyi içermez), (birden fazla pencere açıkken başlayarak) tuşuna basın Ctrl- b fsonra aranacak dizeyi yazın ve tuşuna basın Enter. Eğer bulunursa, o metni içeren bir pencereye geçeceksiniz. Birden fazla pencere eşleşirse, aralarından seçim yapabileceğiniz bir liste görürsünüz.


3
Ciltleme stilini nasıl ayarlayabilirim? (emacs vs vi)
Daniel Que

2
@DanielQue: tmux man sayfasına bir göz atın ve "mod tuşları" ve "durum tuşları" aratın. Bunlar, ciltleme stilini ayarlamanıza izin veren alt komutlardır. Alternatif olarak, başlamadan önce bir ortam değişkenini ( EDITORveya VISUAL) istediğiniz stile ayarlamak daha basit olabilir tmux.
Dennis Williamson,

6
Teşekkürler, benim için çalışmasını set-window-option -g mode-keys visağladım .tmux.conf. Ancak çevre değişkeni alternatifini merak ediyordum ve işe yaramadı. Bir kabuk ortam değişkeni mi, yoksa conf dosyasında ayarlanması gereken tmux ortam değişkeni mi?
Daniel Que,

2
@DanielQue: Bir kabuk ortamı değişkeni. Bunun gibi tmux'un çevresine ihraç edilmesi veya yerleştirilmesi gerekiyor:VISUAL=vi tmux
Dennis Williamson

1
Ayrıca henüz bir regex araması olmadığını da unutmayın, işte bunun üzerine açık bir konu kaynakforge.net/p/tmux/tickets/9
Elijah Lynn 20

7

Kopyalama moduna girin ve tek seferde aramaya başlayın

bind-key / copy-mode \; send-key ?

sadece yapmanıza olanak sağlar:

 Ctrl + B /

ve arama terimini yazmaya başlayın.

Bir dosyaya dökümü ve vim kullanın

İşler daha fazla karıştığında, sadece uygun bir düzenleyici kullanmak istiyorum: https://unix.stackexchange.com/questions/26548/write-all-tmux-scrollback-to-a-file

bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer

Şimdi Parabellek bir dosyaya döker ve sonra ben sadece:

vim /tmp/tmux

Tmux 2.6'da test edilmiştir.


Dosya adı için bu soruyu nasıl yapabilirim (bu yüzden kod yazmam gerekmiyor /tmp/tmux)?
Peeyush Kushwaha,

@PeeyushKushwaha üzgünüm ama tmux fu'm o kadar iyi değil, google'a gitmek zorunda kalırdım, öğrenirseniz haberim olsun.
Ciro Santilli,

1

Ekran günlüğünü görüntülemek / düzenlemek / aramak / kaydetmek için vim'i kullanabilirsiniz, her bash isteminde günlüğü katlayın:

tmux capture-pane -pS -1000000 |
  vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1"  -  

Regex'i isteminize göre ayarlayın, regex'te her ters eğik çizgi için dört ters eğik çizgi kullanın.

Veya vim işlevini ~ / .vimrc içine koyun:

command!           MoshFoldTmuxLog :setl fen fdm=expr
  \   fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1 

Ve ~ / .bashrc dizininde, aranacak çok fazla günlük kaydı varsa, bilgi istemine tarih ekleyin. Örneğin

PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno 
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'         

0

İşte bulduğum bir çözüm.

Hedef yolu ve dosya adını da değiştirebilirsiniz:

# Save screen content to file
bind p command-prompt -p 'Save history to:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'

Eğer basabilirsiniz tmux yapılandırma dosyası yeniden sonra prefix pbenim durumumda Ctrl+a p değiştirebilirsiniz bind ptercih anahtar kombinasyonuna.

İlk maden çalışmadı, çünkü bind pbaşka bir satırda üzerine yazıyordum , ben de bunu yorumladım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.