2011-01-09 16:57:06 +0000 2011-01-09 16:57:06 +0000
195
195

如何在tmux shell的输出缓冲区中搜索?

我不能让这个工作。如何搜索tmux shell的缓冲区?

答案 (2)

304
304
304
2011-01-10 01:56:25 +0000

复制模式搜索

要在tmux历史缓冲区中搜索当前窗口,按Ctrl-b [ 输入copy mode

如果你使用的是emacs键绑定(默认),按Ctrl-s键,然后输入要搜索的字符串,按Enter键。按n键可以再次搜索相同的字符串。按 Shift-n 进行反向搜索。按两次 Escape 键退出 copy mode。你可以使用Ctrl-r进行反方向搜索。需要注意的是,由于tmux是在copy mode中控制键盘的,所以无论stty ixon如何设置,Ctrl-s都可以使用(我喜欢用stty -ixon来实现Bash中的正向搜索)。

如果你使用的是vi键绑定(Ctrl-b:set-window-option -g mode-keys vi),按/然后输入要搜索的字符串,按Enter键。按n键可以再次搜索相同的字符串。按Shift-n键进行反向搜索,就像在emacs模式下一样。按 q 两次退出 copy mode。你可以用 ? 来进行反向搜索。

find-window

如果你想根据窗口中显示的内容切换到一个窗口(这也包括窗口名称和标题,但不包括历史记录),(从多个窗口打开开始)按Ctrl-b f,然后键入要搜索的字符串并按Enter。如果找到了,你将切换到包含该文本的窗口。如果有多个窗口匹配,你会看到一个列表来选择。

10
10
10
2017-09-24 04:53:26 +0000

进入复制模式并一次性开始搜索

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中测试。