web-dev-qa-db-ja.com

tmuxシェルの出力バッファー内を検索するにはどうすればいいですか?

これがうまくいかない。 tmuxシェルのバッファーを検索するにはどうすればいいですか?

156
NES

コピーモード検索

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

Emacsのキー割り当てを使っているなら(デフォルト)、 Ctrl - s 次に検索する文字列を入力してを押します。 Enter。押す n 同じ文字列をもう一度検索します。押す Shift - n 逆検索用です。押す Escape copy modeを終了するには2回。あなたが使用することができます Ctrl - r 逆方向に検索します。 tmuxcopy mode内のキーボードを制御しているので、 Ctrl - s stty ixon設定(私はBashで前方検索を有効にするためにstty -ixonとして設定したい)に関係なく動作します。

Viキーバインディングを使っているなら(Ctrl - b:set-window-option -g mode-keys vi)、押す / 次に検索する文字列を入力してを押します。 Enter。押す n 同じ文字列をもう一度検索します。押す Shift - n emacsモードのように逆検索のために。押す q copy modeを終了するには2回。あなたが使用することができます ? 逆方向に検索します。

検索ウィンドウ

表示されているものに基づいてウィンドウに切り替える場合(これにはウィンドウ名とタイトルも含まれますが履歴は含まれません)、(複数のウィンドウを開くことから始めます)キーを押します。 Ctrl - bf 次に検索する文字列を入力してを押します。 Enter。そのテキストが見つかった場合は、そのテキストを含むウィンドウに切り替わります。複数のウィンドウが一致する場合は、選択可能なリストが表示されます。

252

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

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

Tmux 2.6でテスト済み。

あなたはvimを使用してスクリーンログを表示/編集/検索/保存し、各bashプロンプトでログを折り畳むことができます。

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

プロンプトに従って正規表現を調整し、正規表現の各バックスラッシュに4つのバックスラッシュを使用します。

あるいはvim関数を〜/ .vimrcに入れてください。

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 -'         
1
mosh