23 个版本 (5 个重大更新)
0.5.7 | 2021年2月15日 |
---|---|
0.5.3 | 2020年12月21日 |
0.5.2 | 2020年11月29日 |
0.1.0 | 2020年5月21日 |
0.0.2 | 2014年11月21日 |
#1003 在 命令行工具
每月下载量 56 次
390KB
10K SLoC
tab
为软件和系统工程师设计的直观、由配置驱动的终端多路复用器
- 直观:使用内置的模糊查找器或命令 tab <name>
来发现和选择标签。Tab 有 一个 转义序列,ctrl-T
。
- 配置驱动: tab
提供持久、可配置的标签,具有独特的命令历史、工作目录和文档字符串。
- 状态无关: Tab 提供一个简单、一致的界面,在任何地方、任何状态下都能正常工作。
- 自动完成: Tab 提供交互式模糊查找器和命令行上的动态自动完成,以便您可以快速定位和切换上下文。
- 快速: 标签在 50ms 内启动,并在 10ms 内重新连接。键盘延迟(stdin 到 stdout)低于 5ms。
快速入门
快速安装和使用说明
❯ brew install austinjones/taps/tab
OR
❯ cargo install tab
THEN
❯ tab --install all
# installs shell autocompletion scripts and statusline integrations
❯ tab foo/ # to open a tab.
❯ tab bar/ # to switch to another tab.
works within an active session!
❯ echo $TAB # to view the active tab.
put this in your promptline,
or get https://starship.rs/
❯ tab # to open the fuzzy finder
❯ tab -w baz # to close a tab (or many tabs).
❯ tab -l # to view the tabs
❯ ctrl-T # to escape to the fuzzy finder
Tab 会为标签名称添加尾部斜杠。这改善了标签和子标签之间的自动完成(例如,tab/
和 tab/child/
)。
安装
Tab 目前支持 MacOS
和 Linux
。Tab 支持 bash
、fish
和 zsh
shell。
1. 安装二进制文件
可以使用 Homebrew、Cargo 或二进制文件安装 tab
二进制文件。
(Homebrew)
❯ brew install austinjones/taps/tab
(Cargo)
❯ cargo install tab
(二进制文件)
从: https://github.com/austinjones/tab-rs/releases/latest
(已知问题)
如果 /usr/local/share/zsh/site-functions
目录不可写(并且您不使用 oh-my-zsh),则 zsh 安装程序会失败。请参阅 #221。
在您升级标签或移动标签二进制文件后,您可能需要运行 tab --shutdown
命令来重启守护进程。请参阅 #163。
如果您收到消息 tab: unsupported terminal app
,您可以通过从您的 ~/.zshrc
中移除 osx
插件来修复它。请参阅 #156。
在会话中不传任何参数调用 tab
会导致您的 shell 历史记录被模糊查找器输出清除。在重新连接到会话时,可能需要按下 <enter>
才能出现 shell 提示符。请参阅 #262。
2. 安装您的 shell 的自动补全
Tab 在配置了 shell 自动补全后效果最佳。
Tab 内置了脚本安装器,它提供了更改的详细说明,并提示您确认。您应使用标准用户账户运行它,因为它管理您主目录中的文件。
(所有)
Tab 可以安装系统中所有 shell 以及支持的集成插件。
❯ tab --install all
(Bash | Fish | Zsh)
Tab 还可以安装特定 shell 的补全。
❯ tab --install bash
❯ tab --install fish
❯ tab --install zsh
3. 配置您的状态行
(Starship)
Tab 与 starship 提示符集成,并可以自动配置集成
❯ tab --install starship
您还可以在 ~/.config/starship.toml
中将当前标签放在目录之前。这是我自己的 shell 配置方式
format = "${custom.tab}$all"
(其他)
您还可以配置支持环境变量的任何其他状态行工具。当前标签的名称可在环境变量 $TAB
中找到。
您还可以将自定义的状态行片段添加到 shell 的 rc 配置文件中,例如在 bash、fish 或 zsh。
导航
Tab 被设计成在标签之间提供快速导航,以及在工作空间或仓库之间的持久导航。在这些示例中,❯
前的词缀是所选标签。
要选择一个标签
# opens the fuzzy finder
❯ tab
foo/ ❯
# selects a tab by name
foo/ ❯ tab bar
bar/ ❯
要在会话中切换到另一个标签并退出会话
foo/ ❯ tab bar
bar/ ❯ exit
❯
要在交互式应用程序中切换到另一个标签
monitor/ ❯ top
... top output ...
[ctrl-T]
❯ foo
foo/ ❯
每个工作空间都有自己的标签。您可以使用它来快速重置工作空间中的工作目录
repo/ ❯ tab workspace
workspace/ ❯
要切换到另一个工作空间(如果当前工作空间已配置工作空间链接 tab.yml)
workspace/ ❯ tab other-workspace
other-workspace/ ❯
配置
Tab 支持可配置的会话,这些会话可以用 YAML 编写。有几种配置类型
- 用户配置,可以放置在
~/.config/tab.yml
或$TAB_CONFIG
。此配置始终处于活动状态,可用于定义全局标签或将链接固定到工作空间以便轻松访问。它还可以用于 覆盖快捷键。 - 工作空间配置,在任意子目录中生效,并链接到仓库。
- 仓库配置,用于定义标签端点。您典型的
tab
交互将通过tab myproj/
切换到这些仓库之一。
详细文档可在 示例 目录中找到,但以下是一些启动配置
~/.config/tab.yml or $TAB_CONFIG
workspace:
# this is a global tab, that is always available, and initializes in ~/tab-dir
- tab: global-tab
doc: "my global tab doc"
directory: tab-dir
# this links to a workspace config in ~/my-workspace
# workspaces are only active within the workspace directory
# this creates a link to that workspace, so you can always activate it with `tab my-workspace`
- workspace: my-workspace
~/workspace/tab.yml
workspace:
- repo: my-project/
- tab: workspace-tab
doc: "this is a top-level workspace tab"
- workspace: ../other-workspace
~/workspace/my-project/tab.yml
repo: proj
doc: "my project"
tabs:
- tab: run
dir: src/
doc: "runs the project server"
在这些配置下,tab -l
提供以下功能
$ tab -l
Available tabs:
global-tab/ (my global tab doc)
proj/ (my project)
proj/run/ (runs the project server)
workspace-tab/ (this is a top-level workspace tab)
other-workspace/ (workspace tab for ~/other-workspace)
安全性
Tab 可以在终端中执行命令,因此我非常重视安全性。这是我在 tab
中保护您的机器的方式
tab
守护进程需要以下内容才能接受任何 WebSocket 连接
- 请求必须包含一个 128 字节的身份验证令牌,存储在文件中:
~/.tab/daemon-pid.yml
。在 Unix 操作系统上,该文件分配的权限为600
。 - 请求中不得包含
Origin
标头。这防止了来自浏览器的任何连接。 - 守护进程绑定到
127.0.0.1
。这应该防止来自本地网络的任何尝试连接。
依赖关系
~22–34MB
~566K SLoC