使用方法
按下(前缀键 + F)进入**[fingers]**模式,它会在当前窗格中高亮显示相关内容并附带字母提示。通过按下这些字母,高亮的匹配项将被复制到剪贴板。更少的按键操作 == 更高效!
以下是默认高亮显示的内容列表:
- 文件路径
- SHA 值
- 数字(4位及以上)
- 十六进制数
- IP 地址
- Kubernetes 资源
- UUID
- git 状态/差异输出
查看内置模式列表。
快捷键
在**[fingers]**模式下,你可以使用以下快捷键:
- a-z:将选中的匹配项复制到剪贴板
- CTRL + a-z:将选中的匹配项复制到剪贴板并触发@fingers-ctrl-action。默认触发
:open:
操作,例如用于在浏览器中打开链接。 - SHIFT + a-z:将选中的匹配项复制到剪贴板并触发@fingers-shift-action。默认触发
:paste:
操作,自动粘贴选中的匹配项。 - ALT + a-z:将选中的匹配项复制到剪贴板并触发@fingers-alt-action。默认无操作,可由用户配置。
- TAB:切换多选模式。第一次按下进入多选模式,允许选择多个匹配项。第二次按下将退出并将选中的匹配项复制到剪贴板。
- q、ESC 或 CTRL + c:退出**[fingers]**模式
要求
- tmux 3.0 或更高版本
安装
使用 Tmux 插件管理器
在 .tmux.conf
中的 TPM 插件列表中添加以下内容:
set -g @plugin 'Morantron/tmux-fingers'
按下 前缀键 + I 获取并加载插件。首次运行时,会出现一个向导来完成安装。
手动安装
克隆仓库:
$ git clone https://github.com/Morantron/tmux-fingers ~/.tmux/plugins/tmux-fingers
在 .tmux.conf
中引用它:
run-shell ~/.tmux/plugins/tmux-fingers/tmux-fingers.tmux
通过运行以下命令重新加载 TMUX 配置:
$ tmux source-file ~/.tmux.conf
首次运行时,会出现一个向导来完成安装。
配置
注意:要使更改生效,你需要重新加载 .tmux.conf
文件。
- @fingers-key
- @fingers-jump-key
- @fingers-patterns-N
- @fingers-main-action
- @fingers-ctrl-action
- @fingers-alt-action
- @fingers-shift-action
- @fingers-hint-style
- @fingers-highlight-style
- @fingers-backdrop-style
- @fingers-selected-hint-style
- @fingers-selected-highlight-style
- @fingers-hint-position
- @fingers-keyboard-layout
- @fingers-show-copied-notification
- @fingers-enabled-builtin-patterns
配方:
@fingers-key
默认值:F
自定义进入 fingers 模式的方式。始终需要前缀键:前缀键 + @fingers-key
。
例如:
set -g @fingers-key F
@fingers-jump-key
默认值:J
自定义进入 fingers 跳转模式的方式。始终需要前缀键:前缀键 + @fingers-jump-key
。
在跳转模式下,选择提示后,光标将被放置在匹配项的位置。
@fingers-patterns-N
你还可以添加额外的模式来高亮显示更多内容:
# 你可以像这样定义自定义模式
set -g @fingers-pattern-0 'git rebase --(abort|continue)'
# 递增数字并定义更多模式
set -g @fingers-pattern-1 '其他模式'
# 你可以使用命名捕获组,如 (?<match>你的正则表达式)
# 只高亮并复制匹配的部分
set -g @fingers-pattern-2 'capture (?<match>only this)'
# 注意反斜杠!例如正则表达式 \d{50} 匹配 50 个数字。
set -g @fingers-pattern-3 '\d{50}' # 使用单引号时无需转义
set -g @fingers-pattern-4 "\\d{50}" # 使用双引号时,需要为特殊字符转义反斜杠
set -g @fingers-pattern-5 \\d{50} # 不使用引号时也需要转义
模式使用 PCRE 模式语法。
如果引入的正则表达式包含错误,在调用插件时会显示错误。
@fingers-main-action
默认值::copy:
默认情况下,tmux-fingers 会将匹配项复制到 tmux 和系统剪贴板。
如果你想设置自己的自定义命令,可以这样做:
set -g @fingers-main-action '<你的命令>'
该命令还将接收以下内容:
MODIFIER
:环境变量,设置为ctrl
、alt
或shift
,指定选择匹配项时使用的修饰键。HINT
:环境变量,所选字母提示本身(例如:q
、as
等)。stdin
:复制的文本将通过管道传递给@fingers-copy-command
。
你还可以使用以下特殊值:
:paste:
复制匹配项并自动粘贴。:copy:
使用内置系统剪贴板集成复制匹配项。:open:
使用内置打开文件集成打开文件(在默认浏览器中打开 URL,在操作系统文件导航器中打开文件等)。
@fingers-ctrl-action
默认值::open:
与 @fingers-main-action 相同,但仅在按住 ctrl 选择匹配项时调用
@fingers-alt-action
与 @fingers-main-action 相同,但仅在按住 alt 选择匹配项时调用
@fingers-shift-action
默认值::paste:
与 @fingers-main-action 相同,但仅在按住 shift 选择匹配项时调用
@fingers-hint-style
默认值:"fg=green,bold"
使用此选项可以定义字母提示的样式。
你可以使用与 .tmux.conf
中设置状态栏样式相同的语法来自定义样式。
更多信息请参阅 man tmux
中的 STYLES
部分。
支持的样式有:bright
、bold
、dim
、underscore
、italics
。
@fingers-highlight-style
默认值:"fg=yellow"
高亮匹配项的自定义样式。更多详情请参阅 @fingers-hint-format。
@fingers-backdrop-style
默认值:""
未匹配文本的自定义样式。更多详情请参阅 @fingers-hint-format。
@fingers-selected-hint-style
默认值: "fg=blue,bold"
多模式下选中匹配项的提示格式。
@fingers-selected-highlight-style
默认值: "fg=blue"
多模式下选中匹配项的高亮格式。
@fingers-hint-position
默认值: "left"
控制提示渲染的位置。可能的值为 "left"
和 "right"
。
@fingers-keyboard-layout
默认值: "qwerty"
提示生成时会考虑最佳手指移动。你可以选择以下布局:
qwerty
:默认值,使用所有字母qwerty-left-hand
:仅使用左手容易触及的字母qwerty-right-hand
:仅使用右手容易触及的字母qwerty-homerow
:仅使用主行字母qwertz
qwertz-left-hand
qwertz-right-hand
qwertz-homerow
azerty
azerty-left-hand
azerty-right-hand
azerty-homerow
colemak
colemak-left-hand
colemak-right-hand
colemak-homerow
dvorak
dvorak-left-hand
dvorak-right-hand
dvorak-homerow
@fingers-show-copied-notification
默认值: 0
使用 tmux display-message
显示复制结果的通知消息。
@fingers-enabled-builtin-patterns
默认值: all
以逗号分隔的模式名称列表。内置模式如下:
名称 | 描述 | 示例 |
---|---|---|
ip | IPv4 地址 | 192.168.0.1 |
uuid | UUID 标识符 | f1b43afb-773c-4da2-9ae5-fef1aa6945ce |
sha | SHA 标识符 | c8b911e2c7e9a6cc57143eaa12cad57c1f0d69df |
digit | 四位或更多位数字 | 1337 |
url | URL(支持的协议:http/https/git/ssh/file) | https://asdf.com |
path | 文件路径 | path/to/file |
hex | 十六进制数 | 0x00FF |
kubernetes | Kubernetes 标识符 | deployment.apps/zookeeper |
git-status | 匹配 git status 输出中的文件路径 | modified: ./path/to/file |
git-status-branch | 匹配 git status 输出中的分支名 | Your branch is up to date withname-of-branch |
diff | 匹配 diff 输出中的路径 | +++ a/path/to/file |
使用方法
无需前缀启动 tmux-fingers
你可以通过添加以下绑定来实现无需按 tmux 前缀键就能启动 tmux-fingers:
# tmux.conf
# 按 Alt+F 启动 tmux fingers
bind -n M-f run -b "#{@fingers-cli} start #{pane_id}"
# 按 Alt+J 以跳转模式启动 tmux fingers
bind -n M-j run -b "#{@fingers-cli} start #{pane_id} --mode jump"
仅使用特定模式
你可以使用特定的内置或自定义模式启动 tmux-fingers。
# 使用前缀键 + u 匹配 URL
bind -n u run -b "#{@fingers-cli} start #{pane_id} --patterns url"
# 使用前缀键 + h 匹配哈希值
bind -n h run -b "#{@fingers-cli} start #{pane_id} --patterns sha"
# 使用前缀键 + g 匹配 git 相关内容
bind -n g run -b "#{@fingers-cli} start #{pane_id} --patterns git-status,git-status-branch"
# 使用前缀键 + y 匹配自定义模式
set -g @fingers-pattern-yolo "yolo.*"
bind -n y run -b "#{@fingers-cli} start #{pane_id} --patterns yolo"
致谢和灵感
这个插件深受 tmux-copycat 的启发(tmux-fingers 预定义的搜索模式是从 tmux-copycat "复制"而来的 :trollface:)。
感谢 bruno- 为 tmux 插件开辟了道路!:clap: :clap: