tmuxシェルの出力バッファ内を検索するには?

search tmux

これがうまくいきません。tmuxシェルのバッファを検索する方法を教えてください

  218  NES  2011-01-09


ベストアンサー

コピーモード検索

現在のウィンドウのtmux履歴バッファを検索するには、Ctrlb [を押してcopy modeと入力します

emacsキーバインド(デフォルト)を使用している場合は、Ctrlsを押し、検索したい文字列を入力してEnterを押します。nを押すと、再度同じ文字列を検索することができます。Shiftnを押すと逆検索ができます。Escapeを2回押してcopy modeを終了します。Ctrlrを押すと逆方向の検索ができます。なお、copy modeではtmuxがキーボードのコントロールになっているので、stty ixonの設定に関係なくCtrlsが動作することに注意してください(私はBashで順方向検索を有効にするためにstty -ixonにしておくのが好きです)

vi キーバインド (Ctrlb:set-window-option -g mode-keys vi) を使用している場合は、/ を押してから検索したい文字列を入力し、Enter を押します。nを押すと、再度同じ文字列を検索することができます。Shiftnを押すと、emacsモードと同じように逆検索ができます。qを2回押すとcopy modeを終了します。?で逆方向に検索することができます

find-window

ウィンドウに表示されているものに基づいてウィンドウを切り替えたい場合(これにはウィンドウ名やタイトルも含まれますが、履歴は含まれません)、(複数のウィンドウが開いている状態から)Ctrlb fを押して、検索したい文字列を入力してEnterを押してください。見つかった場合は、その文字列を含むウィンドウに切り替わります。複数のウィンドウが一致した場合は、その中から選択するためのリストが表示されます

341  Paused until further notice.  2011-01-10


コピーモードに入り、一気に検索を開始します

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

をすることができます

 Ctrl + B /

と入力して検索語を入力し始めると、上に検索されます(最新の行が先)

ファイルにダンプしてvimを使う

物事が複雑になってくると、ちゃんとしたエディタを使いたくなるんですよね。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

今はPがバッファをファイルにダンプしてくれて、それでいいんだよ

vim /tmp/tmux

pkfmが提案したように、自動的にvimを開くことで、さらに自動化することができますas suggested by pkfm

bind-key v 'capture-pane' \; \
capture-pane -S - \; \
save-buffer /tmp/tmux \; \
delete-buffer \; \
send-keys Escape 'ddivim /tmp/tmux' Enter

これは、あなたのシェル が vi モード にあると仮定しています

  • エスケープは通常モードになります
  • dd は、既存のコマンドをクリアします
  • iは挿入モードになります
  • そして、vim /tmp/tmuxを実行します

tmux 3.0でテストしました

17  Ciro Santilli 郝海东冠状病六四事件法轮功  2017-09-24


vim を使って画面のログを表示/編集/検索/保存し、各 bash プロンプトでログを折りたたむことができます

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

あなたのプロンプトに従って regex を調節して下さい、regex の各バックスラッシュのための 4 つのバックスラッシュを使用して下さい

または、~/.vimrcにvim関数を入れます

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

そして ~/.bashrc で日付をプロンプトに追加します

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

2  mosh  2019-03-21


ここに私が見つけた解決策があります

ターゲットパスやファイル名も変更できます

# 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'

tmuxの設定ファイルをリロードした後、prefix pを押してもいいですが、私の場合はCtrl+a pを押してもいいです

最初の私のは、別の行でbind pを上書きしていたので、それをコメントアウトしただけで、うまくいきませんでした

0  jturi  2019-09-15


タイトルとURLをコピーしました