#tmux-session #git-repository #directories #switch #opening #default #tool

app tmux-sessionizer

Tmux Sessionizer 是一个命令行工具,可以模糊查找指定文件夹列表中的所有 Git 仓库,并以新 tmux 会话的方式打开它们。此外,对于 Git 工作树,该工具将以新窗口打开所有已签出的工作树。

11 个不稳定版本 (3 个破坏性更新)

0.4.2 2024 年 3 月 1 日
0.3.2 2024 年 1 月 11 日
0.3.0 2023 年 12 月 20 日
0.2.3 2023 年 8 月 21 日
0.1.1 2022 年 5 月 24 日

#133 in 文件系统

每月 43 次下载

MIT 许可证

89KB
2K SLoC

tmux-sessionizer (tms)

管理项目作为 tmux 会话的最快方式

什么是 tmux-sessionizer?

Tmux Sessionizer 是一个基于 ThePrimeagen 的 tmux-sessionizer 的 tmux 会话管理器,但它是基于我特定的 tmux 工作流程进行意见化和个性化的。它非常棒。Git 工作树将自动以新窗口打开,可以排除特定目录,可以设置默认会话,结束会话会跳转到默认会话,并且目标是处理更多边缘情况。

Tmux 内置了键绑定,允许你在会话之间切换。默认情况下,这些是 leader-(leader-)

默认情况下,使用 leader-pleader-n 切换窗口

tms-gif

用法

tms 命令

运行 tms 将查找仓库并在它们上进行模糊查找。将 tms 命令绑定到 tmux 键绑定非常方便,这样你就不必离开你的文本编辑器来打开新的项目。我使用了这个 tmux 绑定 bind C-o display-popup -E "tms"。请参阅下面的图片,以查看 tms switch 键绑定是什么样子

tms switch 命令

此外,还有 tms switch 命令,它会显示带有模糊搜索器和预览窗口的其他活动会话。当与 tmux 的 display-popup 命令结合使用时,可以打开一个在当前会话之上的弹出窗口,这非常有用。这个带有命令的弹出窗口可以设置快捷键。配置可能看起来像这样 bind C-j display-popup -E "tms switch"。然后当使用 leader+C-j 时,弹出窗口就会显示(而且速度很快)

tms-switch

tms windows 命令

tms switch 类似,您可以使用模糊搜索器和预览窗口显示当前会话中的其他活动窗口。与 display-popup 结合使用的配置可能如下所示 bind C-w display-popup -E "tms windows"

tms rename 命令

使用此命令,您可以自动重命名活动会话以及目录名称,并且活动会话中所有面板内的活动目录都将更改为重命名后的目录

tms rename<new_session_name>

bind C-w command-prompt-p"重命名活动会话为" "run-shell 'tms rename %1'".

tms refresh 命令

使用此命令,您可以自动为活动会话或提供的 session_name 生成缺失的工作树窗口。

tms refresh<session_name>

bind C-r"run-shell 'tms refresh'".

CLI 概述

使用 tms --help

Scan for all git folders in specified directorires, select one and open it as a new tmux session

Usage: tms [COMMAND]

Commands:
  config      Configure the defaults for search paths and excluded directories
  start       Initialize tmux with the default sessions
  switch      Display other sessions with a fuzzy finder and a preview window
  windows     Display the current session's windows with a fuzzy finder and a preview window
  kill        Kill the current tmux session and jump to another
  sessions    Show running tmux sessions with asterisk on the current session
  rename      Rename the active session and the working directory
  refresh     Creates new worktree windows for the selected session
  clone-repo  Clone repository into the first search path and create a new session for it
  help        Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

配置默认值

Configure the defaults for search paths and excluded directories

Usage: tms config [OPTIONS]

Options:
  -p, --paths <search paths>...
          The paths to search through. Shell like expansions such as '~' are supported
  -s, --session <default session>
          The default session to switch to (if available) when killing another session
      --excluded <excluded dirs>...
          As many directory names as desired to not be searched over
      --remove <remove dir>...
          As many directory names to be removed from exclusion list
      --full-path <true | false>
          Use the full path when displaying directories [possible values: true, false]
      --search-submodules <true | false>
          Also show initialized submodules [possible values: true, false]
      --recursive-submodules <true | false>
          Search submodules for submodules [possible values: true, false]
      --switch-filter-unknown <true | false>
          Only include sessions from search paths in the switcher [possible values: true, false]
  -d, --max-depths <max depth>...
          The maximum depth to traverse when searching for repositories in search paths, length should match the number of search paths if specified (defaults to 10)
      --picker-highlight-color <#rrggbb>
          Background color of the highlighted item in the picker
      --picker-highlight-text-color <#rrggbb>
          Text color of the hightlighted item in the picker
      --picker-border-color <#rrggbb>
          Color of the borders between widgets in the picker
      --picker-info-color <#rrggbb>
          Color of the item count in the picker
      --picker-prompt-color <#rrggbb>
          Color of the prompt in the picker
      --session-sort-order <Alphabetical | LastAttach>
          Set the sort order of the sessions in the switch command [possible values: Alphabetical, LastAttached]
  -h, --help
          Print help

配置文件位置

默认情况下,tms 在平台特定的配置目录中查找配置

Linux: /home/alice/.config/tms/config.toml
macOS: /Users/Alice/Library/Application Support/tms/config.toml
Windows: C:\Users\Alice\AppData\Roaming\tms\config.toml

如果找不到配置目录,它还将检查 ~/.config/tms/config.toml(仅适用于 Windows 和 macOS)。或者,您可以通过在 shell 配置文件中设置环境变量 TMS_CONFIG_FILE 来指定自定义配置位置,以指定所需的配置路径。

自定义键盘快捷键

可以通过在配置文件中添加一个 [shortcuts] 部分,并将绑定作为 shortcut = action 的对来自定义键盘快捷键,例如

[shortcuts]
"ctrl-k" = "delete_to_line_end"

可用操作包括

  • ""(用于删除默认绑定)
  • "cancel"
  • "confirm"
  • "backspace"
  • "delete"
  • "move_up"
  • "move_down"
  • "cursor_left"
  • "cursor_right"
  • "delete_word"
  • "delete_to_line_start"
  • "delete_to_line_end"
  • "move_to_line_start"
  • "move_to_line_end"

安装

Packaging status

预构建的二进制文件

请查看 发布页面 以获取最新的预构建二进制文件

Cargo

使用 cargo install tmux-sessionizer

从源代码

克隆存储库,并使用 cargo install --path . --force

使用说明

可以使用 'tms sessions' 命令获取带有当前会话星号的样式化活动会话输出。配置可能看起来像这样

set -g status-right " #(tms sessions)"

例如,tmux 状态栏 如果使用此配置,可以帮助重新绑定默认的 tmux 键以切换会话,这样在每次会话切换时状态栏都会刷新。这可以通过以下设置进行配置。

bind -r '(' switch-client -p\; refresh-client -S
bind -r ')' switch-client -n\; refresh-client -S

依赖项

~19–34MB
~580K SLoC