4 个版本
0.0.4 | 2024年1月10日 |
---|---|
0.0.3 | 2024年1月3日 |
0.0.2 | 2023年12月22日 |
0.0.1 | 2023年11月4日 |
#712 in 命令行实用工具
每月 44 次下载
560KB
5K SLoC
bvr
用 Rust 编写的强大分页器,专为处理日志而构建。
BVR(发音为 "beaver")仍在积极开发中。
动机
我需要一个能够处理大型日志文件且快速响应的分页器。我特别讨厌用 grep 搜索文件,然后将其传递给 less,退出后再用不同的正则表达式进行 grep。我想比较日志文件。我还需要大量其他功能,在其他任何分页器中都找不到。
目标
- 快速且响应迅速
- 直观且易于使用
- 直观的快捷键
- 鼠标支持
- 目标用途:滚动浏览日志文件
- 多路复用
- 从头开始构建,以模块化
- 简单且易于理解的代码库
非目标
- 语法高亮
- 编辑文件
功能
进行中或计划
功能 | 描述 | 进度 |
---|---|---|
命令补全 | 使用选项卡完成命令。 | 计划中 |
过滤预设 | 启动时添加预设过滤器。 | 完成 MVP |
自定义快捷键 | 自定义程序的快捷键。 | 完成 MVP |
自动换行 | 自动换行长行。 | 完成 MVP |
基本支持
功能 | 描述 | 进度 |
---|---|---|
管道文件 | 查看其他程序的管道输出,例如 cat file | bvr |
基本 |
状态栏 | 查看分页器的当前状态。 | 基本 |
命令 | 使用模态命令与分页器交互。 | 基本 |
水平滚动 | 水平滚动视图。 | 基本 |
导出输出 | 将活动过滤器的数据导出到文件。 | 完成 |
鼠标支持 | 使用鼠标与 TUI 交互。 | 完成 |
过滤(正则表达式) | 选择并禁用累加搜索过滤器。 | 完成 |
过滤交集 | 通过它们的交集而不是它们的并集来组合过滤器。 | 完成 |
过滤匹配跳转 | 跳转到下一个或上一个匹配过滤器的行。 | 完成 |
多路复用 | 通过选项卡或窗口查看多个文件。 | 完成 |
跟随输出 | 在加载数据时不断向下滚动。 | 完成 |
内置快捷键
- 将来将添加自定义快捷键。
正常模式
这是默认模式。您可以滚动浏览文件。
快捷键 | 描述 |
---|---|
向上键 和 向下键 |
平移视图。 |
n p |
平移到下一个/上一个活动匹配项。 |
Home /g |
平移视图到文件末尾。 |
End /G |
平移视图到文件末尾(跟随输出)。 |
PageUp 和 PageDown /Space |
按页平移视图。 |
Shift + 向上键 和 向下键 |
按半页平移视图。 |
命令模式
在此模式下,您可以输入命令与翻页器交互。
命令 | 描述 |
---|---|
:退出 :q |
退出。 |
:打开<文件> :o |
在新的标签页/视图中打开文件。 |
:关闭 :c |
关闭当前标签页/视图。 |
:切换 :m |
在窗口或标签之间切换多路复用模式。 |
:mux tabs :mux split :m t :m s |
将多路复用设置为相应的模式。 |
:pb pbcopy |
将活动过滤器的输出复制到剪贴板。 |
:过滤正则表达式<正则表达式> :f r<正则表达式> |
创建一个新的搜索正则表达式的过滤器。 |
:过滤文本<文本> :f l<正则表达式> |
创建一个新的搜索文本的过滤器。 |
:过滤清除 :f c |
清除所有过滤器。 |
:过滤合并 :f| |
为过滤复合使用合并策略(默认)。 |
:过滤交集 :f& |
为过滤复合使用交集策略。 |
:<数字> |
转到特定的行号(如果不可用则最近的)。 |
注意: find
是 filter
的别名。
视觉模式
在此模式下,您可以选择要书签的行。
快捷键 | 描述 |
---|---|
向上键 和 向下键 |
移动选择光标。 |
n p |
选择下一个/上一个活动匹配项。 |
Shift + 向上键 和 向下键 ,n 和 p |
将选择光标扩展为选择范围。 |
Space 和 Enter |
在当前行切换书签。 |
过滤模式
在此模式下,您可以切换从书签或搜索中切换的过滤器,以在查看器中省略或包含某些行。
快捷键 | 描述 |
---|---|
Esc 和 Tab |
退出选择模式(进入查看器模式)。 |
: |
进入命令模式。 |
i |
进入选择模式。 |
向上键 和 向下键 |
更改选定的过滤器。 |
Space 和 Enter |
切换选定的过滤器。 |
模式无关
快捷键 | 描述 |
---|---|
Esc |
退出选择模式(进入正常模式)。 |
Ctr; + C |
退出程序。 |
: |
进入命令模式。 |
/ |
创建一个新的过滤器。 |
? |
创建一个新的(文本)过滤器。 |
v |
进入视觉模式。 |
Tab |
进入过滤模式。 |
` 和 ~ |
切换选定的视图(向前和向后)。 |
1 .. 9 |
将选定的视图切换到第 n 个缓冲区。 |
依赖关系
~9–23MB
~321K SLoC