10 个版本
0.7.1 | 2022年3月30日 |
---|---|
0.6.1 | 2021年9月3日 |
0.6.0 | 2021年6月20日 |
0.5.1 | 2021年1月29日 |
0.3.0 | 2020年1月19日 |
#221 在 命令行界面
61 每月下载量
79KB
1.5K SLoC
tmux-thumbs
tmux-fingers 的闪电般快速版本,使用 Rust 编写,用于像 vimium/vimperator 一样进行复制粘贴。
用法
按下 ( 前缀 + 空格 ) 在当前 tmux 可见面板中突出显示所有匹配特定模式的文本。然后按下突出显示的字母提示来在您的 tmux 缓冲区中粘贴文本。
匹配模式
- 文件路径
- diff 中的文件
- Git SHA
- IPFS CID
- 十六进制颜色
- 数字(4位以上)
- 十六进制数字
- Markdown URL
- IPv4、IPv6 地址
- Docker 镜像
- kubernetes 资源
- UUID
这些都是默认突出显示的匹配模式列表。如果您想突出显示列表中未列出的模式,您可以使用 --regexp
参数添加一个或多个。
演示
使用 Tmux 插件管理器
您可以将此行添加到 .tmux.conf
中的 TPM 插件列表中
set -g @plugin 'fcsonline/tmux-thumbs'
run-shell ~/.tmux/plugins/tmux-thumbs/tmux-thumbs.tmux
要安装插件,只需按 前缀 + I。现在您应该可以使用该插件了!
通过检出源代码进行安装
tmux-thumbs
使用 Rust 编写。您需要 rustc
版本 1.35.0 或更高版本。安装 Rust 的推荐方式是从官方 下载页面。
克隆仓库
git clone https://github.com/fcsonline/tmux-thumbs ~/.tmux/plugins/tmux-thumbs
使用 cargo 编译它
cd ~/.tmux/plugins/tmux-thumbs
cargo build --release
在您的 .tmux.conf
中引用它
run-shell ~/.tmux/plugins/tmux-thumbs/tmux-thumbs.tmux
通过运行以下命令重新加载 TMUX 配置
tmux source-file ~/.tmux.conf
配置
如果您想自定义显示 tmux-thumbs 提示的方式,所有可用的参数都可以设置您的完美配置文件。
注意:为了使更改生效,您需要再次引用您的 .tmux.conf
文件。
- @thumbs-key
- @thumbs-alphabet
- @thumbs-reverse
- @thumbs-unique
- @thumbs-position
- @thumbs-regexp-N
- @thumbs-command
- @thumbs-upcase-command
- @缩略图多命令
- @缩略图背景颜色
- @缩略图前景颜色
- @缩略图提示背景颜色
- @缩略图提示前景颜色
- @缩略图选择前景颜色
- @缩略图选择背景颜色
- @缩略图多选前景颜色
- @缩略图多选背景颜色
- @缩略图对比度
- @缩略图osc52
@thumbs-key
默认:空格
选择用于进入缩略图模式的键。
例如
set -g @thumbs-key F
如果您想自定义触发tmux-thumbs
的方式,您始终可以将任何键绑定到thumbs-pick
命令。例如
bind-key \; thumbs-pick
@thumbs-alphabet
默认:qwerty
选择用于构建提示的字符集。查看所有可用字母表
例如
set -g @thumbs-alphabet dvorak-homerow
@thumbs-reverse
默认:禁用
选择您希望分配提示的方向。对于将较短的提示放在光标附近非常有用。
例如
set -g @thumbs-reverse enabled
@thumbs-unique
默认:禁用
选择是否为相同的匹配字符串分配相同的提示。
例如
set -g @thumbs-unique enabled
@thumbs-position
默认:左
选择您想在匹配字符串中显示提示的位置。选项(左,右,左偏,右偏)。
例如
set -g @thumbs-position right
@thumbs-regexp-N
添加额外的匹配模式。此参数可以有多个实例。
例如
set -g @thumbs-regexp-1 '[a-z]+@[a-z]+.com' # Match emails
set -g @thumbs-regexp-2 '[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:' # Match MAC addresses
set -g @thumbs-regexp-3 'Vlan\d+' # match Vlan interface on network devices
set -g @thumbs-regexp-4 "Vlan\\d+" # alternative method of defining regexp
set -g @thumbs-regexp-5 Vlan\\d+ # alternative method of defining regexp
@thumbs-command
默认: 'tmux设置-缓冲区-- {} &&tmux 显示-消息 \"已复制 {}\"'
选择在按提示时执行的命令。 tmux-thumbs
将使用选定的提示替换{}
。
例如
set -g @thumbs-command 'echo -n {} | pbcopy'
@thumbs-upcase-command
默认: 'tmux设置-缓冲区-- {} &&tmux 粘贴-缓冲区&&tmux 显示-消息 \"已复制 {}\"'
选择在按大写提示时执行的命令。 tmux-thumbs
将使用选定的提示替换{}
。
例如
set -g @thumbs-upcase-command 'echo -n {} | pbcopy'
@缩略图多命令
默认: 'tmux设置-缓冲区-- {} &&tmux 粘贴-缓冲区&&tmux 发送-按键' ' &&tmux 显示-消息 \"已复制多个项目!\"'
选择在选择多个项目时执行的命令。 tmux-thumbs
将使用每个选定的提示替换{}
。
例如
set -g @thumbs-multi-command 'echo -n {}'
@缩略图背景颜色
默认:黑色
设置匹配项的背景颜色
例如
set -g @thumbs-bg-color blue
@缩略图前景颜色
默认:绿色
设置匹配项的前景颜色
例如
set -g @thumbs-fg-color green
@缩略图提示背景颜色
默认:黑色
设置提示的背景颜色
例如
set -g @thumbs-hint-bg-color blue
@缩略图提示前景颜色
默认:黄色
设置提示的前景颜色
例如
set -g @thumbs-hint-fg-color green
@缩略图选择前景颜色
默认:蓝色
设置选择的背景颜色
例如
set -g @thumbs-select-fg-color red
@缩略图选择背景颜色
默认:黑色
设置选择的前景颜色
例如
set -g @thumbs-select-bg-color red
@缩略图多选前景颜色
默认:黄色
设置多选项的前景颜色
例如
set -g @thumbs-multi-fg-color green
@缩略图多选背景颜色
默认:黑色
设置多选项的背景颜色
例如
set -g @thumbs-multi-bg-color red
@缩略图对比度
默认: 0
在方括号中显示提示字符以提高可见性。
例如
set -g @thumbs-contrast 1
@缩略图osc52
默认: 0
如果设置为1
,则在运行选择命令的同时,tmux-thumbs
将打印一个OSC52复制转义序列。在支持此序列的终端(例如iTerm)中,此序列允许将内容复制到系统剪贴板以及tmux复制缓冲区。
例如
set -g @thumbs-osc52 1
颜色
这是预定义颜色列表
- 黑色
- 红色
- 绿色
- 黄色
- 蓝色
- 品红色
- 青色
- 白色
- 默认
也支持使用十六进制颜色,格式为#RRGGBB
。
字母表
这是可用字母表列表
数字
: 1234567890abcd
: abcdqwerty
: asdfqwerzxcvjklmiuopghtybnqwerty-homerow
: asdfjklghqwerty-left-hand
: asdfqwerzcxvqwerty-right-hand
: jkluiopmyhnazerty
: qsdfazerwxcvjklmuiopghtybnazerty-homerow
: qsdfjkmghazerty-left-hand
: qsdfazerwxcvazerty-right-hand
: jklmuiophynqwertz
: asdfqweryxcvjkluiopmghtzbnqwertz-homerow
: asdfghjklqwertz-left-hand
: asdfqweryxcvqwertz-right-hand
:jkluiopmhzndvorak
:aoeuqjkxpyhtnsgcrlmwvzfidbdvorak-homerow
:aoeuhtnsiddvorak-left-hand
:aoeupqjkyixdvorak-right-hand
:htnsgcrlmwvzcolemak
:arstqwfpzxcvneioluymdhgjbkcolemak-homerow
:arstneiodhcolemak-left-hand
:arstqwfpzxcvcolemak-right-hand
:neioluymjhk
额外功能
- 箭头导航:您可以使用箭头在所有匹配项之间移动。
- 自动粘贴:如果您的最后输入的提示字符是大写字母,您将选择并粘贴所需的提示。
多选
如果您想启用选择多个匹配项的功能,请按 空格。然后,选择带高亮提示的匹配项或 Enter(使用光标移动)和再次按 空格,以输出所有匹配项。
如果您以多选模式(-m)单独运行 thumbs
,您将能够按所需的字母和 空格 完成选择。
Tmux 兼容性
这是与 tmux-thumbs
兼容的 tmux
版本已知列表
版本 | 兼容 |
---|---|
3.0a | ✅ |
2.9a | ✅ |
2.8 | ❓ |
2.7 | ❓ |
2.6 | ✅ |
2.5 | ❓ |
2.4 | ❓ |
2.3 | ❓ |
1.8 | ❓ |
1.7 | ❓ |
如果您能检查 tmux-thumbs
是否与某些特定的 tmux
版本兼容,请告知我。
独立 thumbs
这个项目最初是一个 tmux
插件,但经过与一些朋友的讨论后,我们决定探索将 thumbs 从 tmux
解耦的所有可能性。您可以使用以下命令进行安装
cargo install thumbs
这些都是可用的选项
thumbs 0.7.1
A lightning fast version copy/pasting like vimium/vimperator
USAGE:
thumbs [FLAGS] [OPTIONS]
FLAGS:
-c, --contrast Put square brackets around hint for visibility
-h, --help Prints help information
-m, --multi Enable multi-selection
-r, --reverse Reverse the order for assigned hints
-u, --unique Don't show duplicated hints for the same match
-V, --version Prints version information
OPTIONS:
-a, --alphabet <alphabet> Sets the alphabet [default: qwerty]
--bg-color <background_color> Sets the background color for matches [default: black]
--fg-color <foreground_color> Sets the foregroud color for matches [default: green]
-f, --format <format>
Specifies the out format for the picked hint. (%U: Upcase, %H: Hint) [default: %H]
--hint-bg-color <hint_background_color> Sets the background color for hints [default: black]
--hint-fg-color <hint_foreground_color> Sets the foregroud color for hints [default: yellow]
-p, --position <position> Hint position [default: left]
-x, --regexp <regexp>... Use this regexp as extra pattern to match
--select-bg-color <select_background_color> Sets the background color for selection [default: black]
--select-fg-color <select_foreground_color> Sets the foreground color for selection [default: blue]
--multi-bg-color <multi_background_color> Sets the background color for a multi selected item [default: black]
--multi-fg-color <multi_foreground_color> Sets the foreground color for a multi selected item [default: cyan]
-t, --target <target> Stores the hint in the specified path
如果您想在没有 tmux
的情况下享受终端提示,您可以这样做
> alias pick='thumbs -u -r | xsel --clipboard -i'
> git log | pick
或多选
> git log | thumbs -m
1df9fa69c8831ac042c6466af81e65402ee2a007
4897dc4ecbd2ac90b17de95e00e9e75bb540e37f
独立的 thumbs
与 FZF 有一些相似之处。
背景
正如我所说,这个项目基于 tmux-fingers。Morantron 做了非凡的工作,使用 Bash 建立了所有必要的组件来实现文本选择器的行为。他只值得我对我在使用 tmux-fingers 的所有时间里表示感激。
在 Fosdem 会议期间,我们有了将这个项目重写为另一种语言的念头。他之前也有过这样的想法,但很难从头开始。因此,我们决定开始尝试 Node.js 和 react-blessed,但我们发现在程序启动时有一些无法接受的延迟。我们没有对此延迟进行深入调查。
在那段时间里,另一种替代方案出现了,称为 tmux-picker,用 Python 实现,并重用了来自 tmux-fingers 的许多部分。它很好,因为它速度快,还增加了原始终端颜色支持。
我很好奇是否可以用 Rust 来编写,很快我就意识到这是可行的。对应用程序所有关键部分进行测试的能力使你对它充满信心。另一方面,Rust 有一个极好的社区,让你能在短时间内完成这样的项目。
路线图
- 支持多选
- 将
tmux-thumbs
从tmux
解耦 - 编写 Kitty 插件,现在
thumbs
可以独立运行
故障排除
tmux-thumbs
必须非常快地工作。如果您在捕获屏幕提示时遇到性能慢的问题,请尝试使用以下设置配置 Tmux
set -g visual-activity off
set -g visual-bell off
set -g visual-silence on
您可以在以下链接了解更多关于此问题的信息:https://github.com/fcsonline/tmux-thumbs/issues/88
每次我使用 tmux-thumbs
时,都会创建无效的窗口。请检查您是否有这个设置。
set -g remain-on-exit on
您可以在以下链接了解更多关于此问题的信息:https://github.com/fcsonline/tmux-thumbs/issues/84
贡献
这个项目最初是为了学习 Rust 而开始的副项目,所以我相信它充满了错误和需要改进的地方。如果您认为您可以对代码进行调整以使其更好,我将非常感激一个 pull request。 ;)
许可证
依赖项
约 3-4MB
约 67K SLoC