これがうまくいきません。tmuxシェルのバッファを検索する方法を教えてください
218 NES 2011-01-09
コピーモード検索
現在のウィンドウのtmux
履歴バッファを検索するには、Ctrl–b [を押してcopy mode
と入力します
emacsキーバインド(デフォルト)を使用している場合は、Ctrl–sを押し、検索したい文字列を入力してEnterを押します。nを押すと、再度同じ文字列を検索することができます。Shift–nを押すと逆検索ができます。Escapeを2回押してcopy mode
を終了します。Ctrl–rを押すと逆方向の検索ができます。なお、copy mode
ではtmux
がキーボードのコントロールになっているので、stty ixon
の設定に関係なくCtrl–sが動作することに注意してください(私はBashで順方向検索を有効にするためにstty -ixon
にしておくのが好きです)
vi キーバインド (Ctrl–b:set-window-option -g mode-keys vi
) を使用している場合は、/ を押してから検索したい文字列を入力し、Enter を押します。nを押すと、再度同じ文字列を検索することができます。Shift–nを押すと、emacsモードと同じように逆検索ができます。qを2回押すとcopy mode
を終了します。?で逆方向に検索することができます
find-window
ウィンドウに表示されているものに基づいてウィンドウを切り替えたい場合(これにはウィンドウ名やタイトルも含まれますが、履歴は含まれません)、(複数のウィンドウが開いている状態から)Ctrl–b 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