#1 楼
复制模式搜索要在
tmux
的历史记录缓冲区中搜索当前窗口,请按Ctrl-b [输入copy mode
。如果您使用的是emacs键绑定(默认),请按Ctrl-s,然后按Ctrl-s。键入要搜索的字符串,然后按Enter。
按n再次搜索相同的字符串。
按Shift-n进行反向搜索。
按两次Escape键退出
copy mode
。>您可以使用Ctrl-r反向搜索。
请注意,由于
tmux
在copy mode
中控制着键盘,因此Ctrl-s的工作与stty ixon
的设置无关(我希望将stty -ixon
设置为启用如果您使用的是vi键绑定(Ctrl-b
:set-window-option -g mode-keys vi
),请按/,然后键入要搜索的字符串,然后按Enter。按n再次搜索相同的字符串。与emacs模式一样,按Shift-n进行反向搜索。按两次q退出copy mode
。您可以使用 ? 查找窗口
如果要基于显示在其中的内容切换到窗口(这还包括窗口名称和标题,但不包括历史记录),(以一个窗口打开),按Ctrl-b f,然后键入要搜索的字符串,然后按Enter。如果找到该文本,您将切换到包含该文本的窗口。如果有多个窗口匹配,您将看到一个列表可供选择。
评论
如何设置装订风格? (emacs与vi)
–丹尼尔·奎(Daniel Que)
2014年8月12日22:39
@DanielQue:看一下tmux手册页并搜索“ mode-keys”和“ status-keys”。这些是允许您设置绑定样式的子命令。另外,在启动tmux之前,将环境变量(EDITOR或VISUAL)设置为所需的样式可能更简单。
–丹尼斯·威廉姆森
2014年8月12日在22:55
谢谢,我让它可以与.tmux.conf中的set-window-option -g mode-keys vi一起使用。但是我对环境变量替代品感到好奇,并且无法使其正常工作。是shell环境变量,还是必须在conf文件中设置的tmux环境变量?
–丹尼尔·奎(Daniel Que)
2014年8月12日23:38
@DanielQue:一个外壳环境变量。需要将其导出或放入tmux的环境中,如下所示:VISUAL = vi tmux
–丹尼斯·威廉姆森
2014年8月13日在4:54
另请注意,尚无正则表达式搜索,这是一个未解决的问题sourceforge.net/p/tmux/tickets/9
–伊利亚·林恩(Elijah Lynn)
2014-10-28 20:58
#2 楼
进入复制模式并立即开始搜索。您只需要执行以下操作即可:
开始输入搜索词,它将向上搜索(最新行)。
转储到文件中并使用vim
当事情涉及更多时,我只想使用适当的编辑器:https://unix.stackexchange.com/questions/26548/write-all-tmux- scrollback-to-a-file
bind-key / copy-mode \; send-key ?
现在
P
将缓冲区转储到文件中,然后我就可以了: Ctrl + B /
通过自动打开,我们可以进一步自动化建议vim以及pkfm的建议:
bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
这假设您的shell处于vi模式,因此:
转义进入正常模式
dd
清除所有现有命令i
进入插入模式,然后我们运行
vim /tmp/tmux
在tmux 3.0中进行了测试。
评论
我如何在提示下输入文件名(因此不必对/ tmp / tmux进行硬编码)?
– Peeyush Kushwaha
18-10-19在8:06
@PeeyushKushwaha对不起,但我的tmux fu不是那么好,我必须用google搜索,如果您发现它,请告诉我。
– Ciro Santilli郝海东冠状病六四事件法轮功
18-10-19在8:08
更进一步,将vim命令嵌入tmux绑定中,并自动从文件底部向后搜索最后一个shell提示,以跳回到最后一个命令:bind-key V'capture-pane'\;捕获窗格-S-\;保存缓冲区/ tmp / tmux \;删除缓冲区send-key转义'ivim“ + normal G” +“?^>” / tmp / tmux'输入。在这里,PS1是>。请注意尾随空格,以及vim之前的i以进入shell使用vi绑定的插入模式。根据您的需要进行更改。
–pkfm
20-09-25在8:06
@pkfm好提示!添加!
– Ciro Santilli郝海东冠状病六四事件法轮功
20 Sep 25'8:37
#3 楼
您可以使用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
#4 楼
这是我找到的解决方案。还可以修改目标路径和文件名:
# 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
,所以我将其注释掉了。
评论
什么版本的tmux(tmux -V)?我相信这是在0.9版本中添加的。@丹尼斯1.3-1
使用tmux -V查找版本仅在更高版本中有效。在Ubuntu / Debian中,您可以执行以下操作:dpkg -l | grep tmux
我不知道为什么,但是这些答案对我不起作用,而CTRL + B PgUp CTRL + B R我的搜索字词有效