#终端 #模糊查找器 #工具 #终端界面 #命令行 #shell 历史 #cli

app tab

直观、由配置驱动的终端多路复用器

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命令行工具

Download history 9/week @ 2024-03-09 2/week @ 2024-03-16 35/week @ 2024-03-30 1/week @ 2024-04-06

每月下载量 56 次

MITGPL-3.0-only

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 目前支持 MacOSLinux。Tab 支持 bashfishzsh 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 配置文件中,例如在 bashfishzsh

导航

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