我无法使它正常工作。如何搜索tmux shell的缓冲区?

评论

什么版本的tmux(tmux -V)?我相信这是在0.9版本中添加的。

@丹尼斯1.3-1

使用tmux -V查找版本仅在更高版本中有效。在Ubuntu / Debian中,您可以执行以下操作:dpkg -l | grep tmux

我不知道为什么,但是这些答案对我不起作用,而CTRL + B PgUp CTRL + B R我的搜索字词有效

#1 楼

复制模式搜索
要在tmux的历史记录缓冲区中搜索当前窗口,请按Ctrl-b [输入copy mode
如果您使用的是emacs键绑定(默认),请按Ctrl-s,然后按Ctrl-s。键入要搜索的字符串,然后按Enter。
按n再次搜索相同的字符串。
按Shift-n进行反向搜索。
按两次Escape键退出copy mode
>您可以使用Ctrl-r反向搜索。
请注意,由于tmuxcopy 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,所以我将其注释掉了。