在终端中打开文件
项目描述
Textualize See
Textualize See是一个命令行工具,用于在终端中打开文件。
see
的作业是运行您系统上的适当命令以在终端中显示文件。您可以使用将glob样式文件模式映射到所选命令的TOML文件来配置要运行的命令。
例如,您可以将see
配置为使用rich-cli打开Python文件,并使用bat打开Rust文件。
配置足够灵活,see
可以根据目录运行不同的命令。例如,您可能希望在Django项目中使用不同的命令打开.html
文件(实际上是模板文件)。
默认情况下是查看文件,但您也可以请求不同的操作,例如“编辑”、“格式化”、“打印”等。
安装
See
作为Python包分发。最简单的方法可能是使用pipx。
pipx textualize_see
这将把see
添加到您的路径中。
使用方法
注意 在使用之前,您需要配置
see
。
使用路径调用see
以在终端中查看该文件
see application.py
如果您添加了两个参数,则第一个应该是操作,第二个应该是路径。
see edit application.py
这将使用编辑文件的命令打开application.py
。
路径之后添加的任何附加参数都将转发到命令。在以下示例中,--pager
不是see
的选项,因此它将被转发到打开文件的命令。
see application.py --pager
请注意,see
只会在配置路径上运行命令。如果没有匹配的路径,则 see
将不会执行任何操作。有关配置,请参阅下面。
配置
Textual 从 ~/.see.toml
读取配置(一个 TOML 文件)。此文件应包含几个表格,它们指定操作(例如“查看”)以及与之一一对应的 glob 风格模式。
表格应包含一个 run
键,它定义要运行的命令。run
值可能包含 $PATH
或 $ARGS
,分别用路径和前向参数替换。
以下将匹配任何扩展名为 ".py" 的文件。
[[actions.view."*.py"]]
run = "rich $PATH $ARGS"
如果您运行以下 see
命令
see application.py --pager
则 see
会将路径传递给 rich
,并带上它不认识的任何选项,例如 --pager
。
rich application.py --pager
优先级
您可以选择添加与模式关联的 priority
整数值。如果没有提供,则 priority
将默认为 1。
如果有多个模式与路径匹配,则使用优先级最高的操作。这可以用于在没有显式匹配的情况下添加后备。例如,我们可以向 cat
添加以下部分,将任何未显式匹配的文件添加到终端中。
[[actions.view."*"]]
priority = 0
run = "cat $PATH $ARGS"
为什么我构建了这个?
我一直觉得应该有这样一个东西。这是桌面操作系统认为理所当然的功能,但在终端中体验并不完全透明。有其他替代方案(请参阅下面),但这正是我希望它如何工作的方式。它也是跨平台的,所以我不会在 Windows 上感到不适应。
为什么不直接使用 ... 呢?
不可避免地,这会引发问题:“为什么不直接使用 TOOL?”我不想说服您放弃 TOOL,但这是我考虑过的。
open 或 xdg-open
macOS 上的 open
和 Linux 上的 xdg-open
可以打开文件。但通常它们会打开桌面应用程序,而我在终端时通常希望留在终端中。
hash bangs?
hash bang #!
用于 执行 文件,而我想打开它。它还要求您可以编辑该文件本身。
shell 别名
您可以为每个想要打开的文件类型添加一个别名,例如 md-view
和 md-edit
等。别名是合理的使用方式,但它需要每个文件类型 + 动作一个命令,这更难记住。
ZSH 提供 alias -s
,它将文件扩展名与命令关联起来。例如,如果您有别名 alias -s py=rich
,则可以输入 foo.py
来语法化 Python 文件。我喜欢这个,但我 认为 它只由 zsh
shell 提供(可能不正确)且不是跨平台的。
为什么是 Python?
它是 Python,因为我主要是一个 Python 开发者。这样的工具往往会更接近底层。如果 see
变得流行并且界面稳定下来,那么我(或其他人)可能会用编译语言来编写它。在此之前,您可能需要等待额外的几个微秒才能运行应用程序。
支持
目前请将此项目视为 alpha 版本软件。它是在一天之内编写的,尚未经过实战测试。到目前为止,它仅在 MacOS 上进行了测试,但目标是使其在所有平台上工作。
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装软件包 的信息。