2 个版本
新功能 0.5.6 | 2024 年 8 月 15 日 |
---|---|
0.5.5 | 2024 年 2 月 24 日 |
#957 在 命令行工具
113 每月下载量
140KB
2.5K SLoC
tmux-copyrat
一个用于从 tmux 窗格历史记录复制文本段到剪贴板的 tmux 插件。
使用场景:你在 tmux 中,窗格历史记录中有一些日期需要复制。你按下快捷键以突出显示日期(下面将介绍配置)。tmux-copyrat
将自动启动并突出显示所有与日期对应的文本段。所有文本段都显示一个或两个键的 提示,然后你可以按下提示以将文本段复制粘贴到 tmux 剪贴板或系统剪贴板。请查看下面的演示。
该名称是对我多年来一直使用的tmux-copycat 的致敬。对于这个 Rust 实现,我受到了 tmux-thumbs 的启发,甚至借鉴了他的一些正则表达式测试。
版本要求: rustc 1.74+
演示
即将推出
使用方法
首先安装并可选地自定义插件(请参阅INSTALLATION.md 和 CONFIGURATION.md 页面),然后重新启动 tmux。
按下下面表格中定义的其中一个 tmux 快捷键,以突出显示匹配特定模式的文本段。要复制 tmux 缓冲区中的某个文本段,请按下相应的 提示,或按 Esc 取消并退出。
如果你想要将文本段复制到系统剪贴板,可以按提示键的大写版本(例如,按 E 而不是 e),或者首先使用 space 键切换目标缓冲区,然后按无大写的提示键。
你还可以使用 n 和 N(或 Up 和 Down)键在突出显示的文本段之间移动焦点。按 y 将聚焦的文本段复制到 tmux 缓冲区,或按 Y 将其复制到系统剪贴板。
默认情况下,文本段突出显示从终端底部开始,但你可以使用 --reverse
选项反转此行为。使用 --focus-wrap-around
选项使导航返回到第一个文本段。更多选项请参阅 CONFIGURATION.md。
匹配模式和默认快捷键
tmux-copyrat 可以匹配一个或多个预定义(命名)的模式,但您也可以添加自己的模式(请参阅CONFIGURATION.md)。
在copyrat.tmux
插件文件中提供的默认配置提供了以下快捷键绑定。由于它们都从prefix + t开始,下表只列出了后面的键盘键。例如,对于URL,键是u,但您应该输入prefix + t + u。
快捷键 | 搜索 | 模式名称 |
---|---|---|
c | 十六进制颜色代码 | hexcolor |
d | 日期或日期时间 | datetime |
D | Docker/Podman ID | docker |
e | 电子邮件 | email |
G | 4位以上的数字字符串 | digits |
h | SHA-1/-2 短/长 | sha |
m | Markdown URL(代码[..](matched-url)) | markdown-url |
p | 绝对和相对文件路径 | path |
P | 十六进制数字和指针地址 | pointer-address |
单引号内的字符串 | quoted-single |
|
双引号内的字符串 | quoted-double |
|
反引号内的字符串 | quoted-backtick |
|
q | 单/双/反引号内的字符串 | |
u | URL | url |
U | UUID | uuid |
v | 版本号 | version |
4 | IPv4地址 | 4 |
6 | IPv6地址 | 6 |
空格 | 所有模式 |
Tmux 兼容性
tmux-copyrat
已知与从tmux 3.0开始的版本兼容。
测试此类与tmux的集成非常耗时,因此如果您发现任何不兼容性,我将不胜感激。
独立的copyrat
可执行文件
尽管此crate的核心二进制文件是tmux-copyrat
,但crate还包含了一个独立的copyrat
可执行文件,它提供了相同的功能,但无需tmux依赖或集成,而是从stdin读取。
您可以使用copyrat
搜索您提供的stdin中的文本段,类似于FZF,但更加专注且交互性较低。
例如,这里有一段包含日期和git哈希的文本,您可以使用copyrat进行搜索。
* e006b06 - (12 days ago = 2021-03-04T12:23:34) e006b06 e006b06 swapper: Make quotes
/usr/local/bin/git
lorem
/usr/local/bin
lorem
The error was `Error no such file`
让我们假设您想要一个快速的方法来始终搜索SHA-1/2、日期时间、反引号内的字符串,您只需定义以下别名
alias pick='copyrat -r --unique-hint -s bold -x sha -x datetime -x quoted-backtick | pbcopy'
然后简单
git log | pick
您将在终端看到以下内容
您可能已经注意到所有相同的范围共享相同的提示,这是由于-unique-hint
选项(-u
)。提示以粗体文本显示,因为使用了--hint-style bold
选项(-s
)。提示从底部开始,因为使用了--reverse
选项(-r
)。由于使用了--custom-regex-pattern
选项(-X
),因此为匹配任何"loca"提供了一个自定义模式。sha、日期时间和反引号内的内容因为使用了--named-pattern
选项(-x
)而被突出显示。
运行代码覆盖率
安装llvm-tools-preview组件和grcov
rustup component add llvm-tools-preview
cargo install grcov
安装nightly
rustup toolchain install nightly
以下make调用将切换为夜间运行测试,使用Cargo输出覆盖率HTML报告在 ./coverage/
make coverage
覆盖率报告位于 ./coverage/index.html
许可
本项目采用 MIT 许可
供您选择。
贡献
除非您明确声明,否则您有意提交以包含在本工作中的任何贡献,如MIT许可中定义,将作为MIT许可,无任何附加条款或条件。
依赖
约5-15MB
约201K SLoC