
如何配置 kitty open-actions.conf 自定义点击终端超链接后的动作【免费下载链接】kittyIf you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.项目地址: https://gitcode.com/GitHub_Trending/ki/kitty在 kitty 中ls、gcc、systemd、ripgrep 等终端程序可以在输出中生成超链接。默认情况下点击这些链接的行为很有限如果希望点击图片直接在全屏窗口里打开、点击 grep 结果跳到对应行打开编辑器、点击日志文件开一个新系统窗口来 tail就需要在 kitty 配置目录中创建open-actions.conf为不同类型的 URL 声明匹配条件和点击后执行的动作。本文按照 docs/open_actions.rst 的说明完成这个配置并用 docs/kittens/hyperlinked_grep.rst 的例子验证效果。准备条件open-actions.conf放在 kitty 配置目录中该目录通常就是~/.config/kitty/与kitty.conf同目录。也可以用--config选项或KITTY_CONFIG_DIRECTORY环境变量指定其他位置见 docs/conf.rst。链接必须真正由终端程序输出。文档给出的例子是ls --hyperlinkauto。注意 macOS 自带的ls不支持超链接需要先安装 GNU Coreutils通过 Homebrew 安装后命令是gls。触发方式是按住ctrlshift再点击链接这是文档中所有验证步骤共用的操作。创建第一条 open-actions.conf 并验证新建~/.config/kitty/open-actions.conf写入文档给出的示例# Open any image in the full kitty window by clicking on it protocol file mime image/* action launch --typeoverlay kitten icat --hold -- ${FILE_PATH}文件结构是每个条目由一个或多个匹配条件如protocol、mime加一个或多个action行组成条目之间用空行分隔。上面这条的意思是——协议是file且 MIME 类型匹配image/*的链接点击后执行launch动作用 icat kitten 以 overlay 方式在当前窗口上方显示图片${FILE_PATH}会被替换为 URL 的路径部分。验证步骤在 kitty 窗口中运行ls --hyperlinkautomacOS 上为gls --hyperlinkauto按住ctrlshift点击其中某个图片文件名预期现象图片直接覆盖在当前窗口上方打开按任意键关闭。可用的匹配条件每个条目至少需要一个匹配条件URL 必须匹配该条目的全部条件才会触发其动作。条件匹配按文件中的顺序进行在第一个命中的条目处停止因此更具体的条件要放在文件前面。可用的条件条件含义文档中的示例protocol逗号分隔的协议列表不写则不限协议http, httpsurl正则表达式须匹配整个未解码的URL—fragment_matches正则表达式匹配 URL 中#之后的 fragment[0-9]mime逗号分隔的 MIME 类型列表text/*, image/*, application/pdfext逗号分隔的文件扩展名列表jpeg, tar.gzfileshell glob 模式须匹配文件名image-??.png关于mime有两点边界MIME 是按文件扩展名判断的不读文件内容目录的 MIME 类型是inode/directory。如果系统 MIME 数据库缺少你需要的定义可以在 kitty 配置目录里创建mime.types文件补充每行一个定义例如text/plain rst md。编写 action 行action可以是任何能映射到kitty.conf按键组合的动作一个条目也可以写多个 action。文档给的第二个示例是给*.log文件开新系统窗口 tail并同时调小当前窗口字号# Tail a log file (*.log) in a new OS Window and reduce its font size protocol file ext log action launch --title ${FILE} --typeos-window tail -f -- ${FILE_PATH} action change_font_size current -2在 launch 规格中除了普通环境变量还可以使用这些 kitty 提供的特殊变量URL完整的 URLFILE_PATHURL 的路径部分未加引号形式FILEURL 路径中的文件部分未加引号形式FRAGMENTURL 的 fragment未加引号形式没有则为空字符串NETLOC主机名未加引号形式没有则为空字符串URL_PATHURL 的路径、query、fragment 部分不做 unquoteEDITOR终端文本编辑器优先使用kitty.conf中配置的editorSHELLshell 路径优先使用kitty.conf中配置的shell如果某个 action 会反复使用可以像kitty.conf里一样用action_alias定义别名避免重复书写。实战示例点击搜索结果跳到 vim 对应行docs/kittens/hyperlinked_grep.rst 中给出的完整配置是两条有序条目第一条带行号 fragment 的文件用 vim 打开到该行第二条兜底把普通文本文件交给编辑器# Open any file with a fragment in vim, fragments are generated # by the hyperlink-grep kitten and nothing else so far. protocol file fragment_matches [0-9] action launch --typeoverlay --cwdcurrent vim ${FRAGMENT} -- ${FILE_PATH} # Open text files without fragments in the editor protocol file mime text/* action launch --typeoverlay --cwdcurrent -- ${EDITOR} -- ${FILE_PATH}顺序是有意为之fragment_matches [0-9]的条目更具体必须排在通用text/*条目之前否则所有文本链接都会被第二条接走。验证方式运行kitten hyperlinked-grep something按住ctrlshift点击任意一行结果文件应在 vim 中打开并定位到匹配行。文档明确提醒如果你用的不是 vim需要相应修改open-actions.conf中的第一条。不想用鼠标时文档给出的替代路径是绑定open_selected_hyperlink动作到按键即可用键盘打开选中的超链接见 docs/kittens/hints.rst。配置不生效时检查什么行格式错误会被静默忽略无法解析的行不会触发匹配kitty 会记录一条Ignoring malformed open actions line: 行内容可以在 kitty 的日志中看到实现见 kitty/open_actions.py。先检查报错中的行内容。改完即生效kitty 每次加载都会比较该文件的修改时间保存修改后下一次点击就使用最新配置不需要重启见 kitty/open_actions.py。MIME 不识别系统 MIME 数据库缺少定义时按上文在 kitty 配置目录的mime.types中补充定义行。确认链接来源验证用的ls需要带--hyperlinkauto参数输出且点击时必须按住ctrlshift——文档中的两个示例都依赖这两点。边界说明open-actions.conf只负责点击终端内超链接这一条路径。直接用 kitty 打开文件/URL命令行kitty open file_or_url、macOS 的 Finder Open With 或拖拽到 dock 图标由另一个文件launch-actions.conf控制写法与open-actions.conf相同默认动作见 docs/open_actions.rst 后半部分。本文的配置不会影响那条路径反之亦然。【免费下载链接】kittyIf you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.项目地址: https://gitcode.com/GitHub_Trending/ki/kitty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考