Answers:
要在tmux
历史记录缓冲区中搜索当前窗口,请按Ctrl- b [输入copy mode
。
如果您正在使用emacs键绑定(默认设置),请按Ctrl- s然后输入要搜索的字符串,然后按Enter。按n再次搜索相同的字符串。按Shift- n进行反向搜索。按Escape两次退出copy mode
。您可以使用Ctrl- r反向搜索。请注意,由于tmux
可以控制键盘copy mode
,所以Ctrl- s不管stty ixon
设置如何(我希望stty -ixon
在Bash中启用向前搜索)都可以使用-。
如果您使用的是vi键绑定(Ctrl- b:set-window-option -g mode-keys vi
),请按,/然后键入要搜索的字符串,然后按Enter。按n再次搜索相同的字符串。与emacs模式一样,按Shift- n进行反向搜索。按q两次退出copy mode
。您可以使用?反向搜索。
如果要基于其中显示的内容(也包括窗口名称和标题但不包括历史记录)切换到窗口,(从打开多个窗口开始)请按Ctrl- b f然后键入要搜索的字符串,然后按Enter。如果找到该文本,您将切换到包含该文本的窗口。如果有多个窗口匹配,您将看到一个列表可供选择。
EDITOR
或VISUAL
)设置为所需的样式可能会更简单tmux
。
set-window-option -g mode-keys vi
我的.tmux.conf
。但是我对环境变量替代品感到好奇,并且无法使其正常工作。是shell环境变量,还是必须在conf文件中设置的tmux环境变量?
VISUAL=vi tmux
进入复印模式,一口气开始搜索
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中测试。
/tmp/tmux
)?
您可以使用vim查看/编辑/搜索/保存屏幕日志,在每个bash提示符下折叠日志:
tmux capture-pane -pS -1000000 |
vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1" -
根据您的提示调整正则表达式,对正则表达式中的每个反斜杠使用四个反斜杠。
或者将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 -'
tmux
(tmux -V
)是什么版本?我相信这是在0.9版本中添加的。