#config-directory #shortcut #hop #cd #navigate #cli

bin+lib bhop

一个小型命令行工具,帮助您在终端之间跳跃并轻松编辑文件

19 个版本 (5 个破坏性更新)

0.8.8 2023 年 7 月 5 日
0.8.7 2023 年 7 月 4 日
0.7.0 2023 年 6 月 3 日
0.6.1 2023 年 5 月 31 日
0.1.0 2023 年 2 月 9 日

#854命令行工具

Download history 2/week @ 2024-03-07 20/week @ 2024-03-14 65/week @ 2024-03-28 38/week @ 2024-04-04

每月下载量 175

MIT 许可协议

57KB
1K SLoC

bhop (bunnyhop)

Test Status Crates.io License

这是什么意思呢?

Tl;dr: 一个通过保存快捷方式和历史移动来快速处理文件系统的工具。允许用户通过单条命令跳转到其他位置或打开其他位置中的文件。

我有一个名为 short 的 bash/zsh/nushell 函数,它允许用户轻松跳转到预定义目录。

我最初使用的 zsh 函数定义如下:

short() {
    if [[ "$1" == "add" ]]; then
        if [ ! -f  ~/.config/.shorts/${2} ]; then
            echo "[cmd] \`short ${2}\` -> ${PWD}"
            ln -sf ./ ~/.config/.shorts/${2}
        fi
    else
        cd ~/.config/.shorts/${1}
    fi
}

然而,由于这需要为各种使用的 shell(个人使用 nushell,工作使用 bash 和 zsh)维护单独的脚本,因此每次我想添加新功能时都需要多次更新相同的脚本,这让我感到非常烦恼。

bhop(缩写为 bunnyhop)旨在模仿 short 的行为,但它在单一语言中实现,因此可以轻松地在各种 shell 之间更新。

这次迭代还包含了对之前使用的非常简单的 shell 函数的许多改进(并且不会因为不必要的符号链接而使系统变得杂乱)。

安装

安装需要 cargo(显然,因为这是一个用 Rust 编写的工具)。

如果您当前系统上没有安装 rustcargo,请在安装 bunnyhop 之前运行以下命令:

curl https://sh.rustup.rs -sSf | sh

安装 cargo 后,只需运行以下命令即可安装 bunnyhop

cargo install bhop

默认运行器别名设置为 hp,您可以使用此别名从命令行调用 bunnyhop(除非您设置了自定义别名)。

如果您想使用不同的别名从终端调用 bunnyhop,只需在运行以下命令之前设置环境变量 "BHOP_SHELL_ALIAS":

如果您想在安装后更改别名,再次设置环境变量 "BHOP_SHELL_ALIAS" 并重新运行相应的 cargo install bhop 命令。

安装完成后并添加了 shell 插件,您可以通过简单地键入以下内容打开配置文件,以设置您的编辑器和其他首选项:

foo@bar:~$ hp configure # full command

当前构建支持四个不同的 shell:nushell、zsh、powershell 以及使用 ~/.bashrc 的 bash/dash 等其他任何东西。

要查看所有配置资源部署的位置,请使用

foo@bar:~$ hp locate
/home/you/.config/bhop

使用

foo@bar:~$ hp version # show version
bunnyhop 🐇 v.0.8.6
foo@bar:~$ hp v # alternate command
bunnyhop 🐇 v.0.8.6

要添加一个具有快捷名 example 的快捷方式到您的目录

foo@bar:~$ hp add . example
foo@bar:~$ hp + . example # alternate command

要添加一个具有快捷名 configs 的快捷方式到 /home/you/.config 目录

foo@bar:~$ hp add /home/you/.config configs
foo@bar:~$ hp + /home/you/.config configs # alternate command

当然,如果您想同时移动到您的 /home/you/.config 目录并将它重命名为 configs

foo@bar:~$ hp /home/you/.config configs

要添加一个可以打开的文件在设置编辑器中的快捷方式,使用

# will create a shortcut to init.vim named `init.vim`
foo@bar:~$ hp add /home/you/.configs/nvim/init.vim

# will create a shortcut to init.vim named `nvim-confs`
foo@bar:~$ hp add /home/you/.configs/nvim/init.vim nvim-confs

如果快捷方式映射到一个文件而不是目录,通过“跳转”到该文件在您的编辑器中打开它

foo@bar:~$ hp init.vim # full command consistent with opening a directory for editing

要删除名为 example 的快捷方式

foo@bar:~$ hp remove example
foo@bar:~$ hp rm example # alternate command
foo@bar:~$ hp - example # alternate command

跳转到名为 example 的目录

foo@bar:~$ hp example

跳转到名为 example 的目录并打开该目录的默认配置

foo@bar:~$ hp group example
foo@bar:~$ hp grp example # alternate command
foo@bar:~$ hp ! example # alternate command

跳转到名为 example 的目录并打开该目录名为 tests 的配置

foo@bar:~$ hp group example tests
foo@bar:~$ hp grp example tests # alternate command
foo@bar:~$ hp ! example tests # alternate command

列出可用的跳转

foo@bar:~$ hp list
Shortcuts:
configs  -> /home/you/.config
back     -> /home/you/Documents
hop-conf -> /home/you/.config/bhop/bhop.toml
example  -> /home/you/project/example_directory
History:
src -> /home/you/projects/hop/src
hop -> /home/you/projects/hop
foo@bar:~$ hp ls # alternate command
foo@bar:~$ hp .. # alternate command

列出包含 hop 的可用的跳转

foo@bar:~$ hp list *hop*
Shortcuts:
hop-conf -> /home/you/.config/bhop/bhop.toml
History:
src -> /home/you/projects/hop/src
hop -> /home/you/projects/hop

获取具有快捷名 example 的跳转的输出路径

foo@bar:~$ hp find example
/home/you/project/example_directory
foo@bar:~$ hp f example # alternate command
foo@bar:~$ hp ? example # alternate command

您可以使用 hp 类似于 cd 来移动到目录或编辑当前目录中的文件。这将然后添加该目录到存储的历史记录中,并允许您在未来跳转而不直接添加快捷方式。

foo@bar:~$ echo $PWD
/home/you/projects/hop

foo@bar:~$ ls
.gitignore
Cargo.toml
README.md
src
target

foo@bar:~$ hp src

foo@bar:~$ echo $PWD
/home/you/projects/hop/src

如果您在具有快捷方式的目录中放置一个名为 .bhop 的文件,您可以为此快捷方式目录设置不同的“窗口”或“功能”。一个示例 .bhop 文件如下所示

foo@bar:~$ cat .bhop
test = "cargo test -- --nocapture"

[default]
files = ["src/*.rs"]

[tests]
files = ["tests/*.rs"]

[runners]
files = ["runners/*.rs", "runners/scripts/*"]

[notebooks]
editor = "jupyter-notebook"
files = ["examples/*.ipynb"]

给定上述在具有快捷名 example_shortcut 的目录中的 .bhop 文件,您可以运行以下命令进行单元测试

foo@bar:~$ hp group example_shortcut test
...
foo@bar:~$ hp ! example_shortcut test # alternate command

给定相同的 .bhop 文件和相同的快捷名 example_shortcut,您可以使用以下命令在默认编辑器中打开 runners 文件夹中的所有文件和脚本

foo@bar:~$ hp group example_shortcut runners
...
foo@bar:~$ hp ! example_shortcut runners # alternate command

解析 HP 命令的一般流程

使用快捷名或路径调用 hp 命令将尝试做三件事以确定应该跳转到何处

  1. 检查它是否是文件系统中的有效位置。
  2. 检查它是否在用户手动添加的快捷方式列表中。
  3. 检查它是否在用户之前使用的 hp 命令的历史记录中。

1) 和 2) 之间的顺序可以在您的 bhop.toml 配置文件中切换。

自定义配置

默认情况下,您可以在 ~/.config/bunnyhop/bunnyhop.toml 找到 bhop 的配置文件。

查看配置文件以查看当前可用的选项以及设置您的个人编辑器(Unix 默认为 vi,Windows 默认为 notepad)。

另外,如果您想使用系统默认位置以外的位置存储配置文件和 SQLite 数据库,您可以在运行 bhop 之前设置以下环境变量。

  1. BHOP_CONFIG_DIRECTORY - 设置配置文件部署的目录。默认为 ~/.config/bhop

如果您的 shell 配置文件设置为非默认位置,您可以在构建 bhop 之前手动设置以下环境变量,它将配置您设置的运行器

  1. BHOP_ZSH_CONFIG_DIR - 您的 .zshrc 文件所在的目录。
  2. BHOP_BASH_CONFIG_DIR - 存放您的 .bashrc 文件的目录。
  3. BHOP_NUSHELL_CONFIG_DIR - 存放您的 nushell env.nu 文件的目录。
  4. BHOP_POWERSHELL_CONFIG_DIR - 存放您的 powershell profile.ps1Microsoft.PowerShell_profile.ps1 文件的目录。

待办事项

  1. 编写更全面的单元测试套件。
  2. 添加自定义编辑器启动命令(例如,调用编辑器打开文件时允许使用标志)。
  3. 制作一个 Neovim 插件,以便我可以在不打开新的终端面板或关闭当前终端面板的情况下轻松导航。

许可证

MIT。

如果您有问题或希望进行一些更新/改进,请随时联系并提交问题。

(结束。)

依赖关系

~5–15MB
~196K SLoC