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 在 命令行工具
每月下载量 175
57KB
1K SLoC
bhop (bunnyhop)
这是什么意思呢?
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 编写的工具)。
如果您当前系统上没有安装 rust
或 cargo
,请在安装 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
命令将尝试做三件事以确定应该跳转到何处
- 检查它是否是文件系统中的有效位置。
- 检查它是否在用户手动添加的快捷方式列表中。
- 检查它是否在用户之前使用的
hp
命令的历史记录中。
1) 和 2) 之间的顺序可以在您的 bhop.toml
配置文件中切换。
自定义配置
默认情况下,您可以在 ~/.config/bunnyhop/bunnyhop.toml
找到 bhop
的配置文件。
查看配置文件以查看当前可用的选项以及设置您的个人编辑器(Unix 默认为 vi
,Windows 默认为 notepad
)。
另外,如果您想使用系统默认位置以外的位置存储配置文件和 SQLite 数据库,您可以在运行 bhop
之前设置以下环境变量。
BHOP_CONFIG_DIRECTORY
- 设置配置文件部署的目录。默认为~/.config/bhop
。
如果您的 shell 配置文件设置为非默认位置,您可以在构建 bhop
之前手动设置以下环境变量,它将配置您设置的运行器
BHOP_ZSH_CONFIG_DIR
- 您的.zshrc
文件所在的目录。BHOP_BASH_CONFIG_DIR
- 存放您的.bashrc
文件的目录。BHOP_NUSHELL_CONFIG_DIR
- 存放您的 nushellenv.nu
文件的目录。BHOP_POWERSHELL_CONFIG_DIR
- 存放您的 powershellprofile.ps1
或Microsoft.PowerShell_profile.ps1
文件的目录。
待办事项
- 编写更全面的单元测试套件。
- 添加自定义编辑器启动命令(例如,调用编辑器打开文件时允许使用标志)。
- 制作一个 Neovim 插件,以便我可以在不打开新的终端面板或关闭当前终端面板的情况下轻松导航。
许可证
MIT。
如果您有问题或希望进行一些更新/改进,请随时联系并提交问题。
(结束。)
依赖关系
~5–15MB
~196K SLoC