1个不稳定版本
0.2.0 | 2023年2月11日 |
---|
#4 in #hop
28KB
568 行
跳转
这是什么?
我有一个名为 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
}
nushell 版本如下
def-env short [p1: string, p2: string = ""] {
let loc = if $p1 == "add" {
let loc = $"~/.config/.shorts/($p2)"
if not ($loc | path exists) {
echo $"[cmd] `short ($p2)` -> ($env.PWD)"
ln -s $env.PWD $loc
}
$loc
} else {
$"~/.config/.shorts/($p1)"
}
cd $loc
}
然而,由于这些是针对我使用的各种shell(个人使用 nushell,工作使用 bash 和 zsh)的独立脚本,每次我想添加新功能时,都需要更新相同的脚本三次,这让我感到非常烦恼。hop
应该能够复制 short
的行为,但在单一语言中实现,因此可以在不同的shell之间轻松更新。
安装方法
简单地将此存储库克隆,然后从根存储库目录运行 make
。
当前安装脚本适用于大多数系统上的大多数shell,需要系统安装 python3
。
要从 bash 类型的 shell 安装,请使用
git clone https://github.com/gnoat/hop.github
cd hop
make install
要从 nushell 安装,请使用
git clone https://github.com/gnoat/hop.github
cd hop
make all
注意:如果在 macOS 上安装并使用 make unix
选项,请确保您使用的是 gnu-sed,而不是苹果那糟糕的混合版本。
当前构建支持三种不同的shell:nushell、zsh 和 bash/dash/任何使用 ~/.bashrc 的东西。
使用方法
对于一般使用帮助
hp help # show basic commands
hp version # show version
要添加名为 example
的快捷方式到您的目录
hp add example
要将快捷方式添加到当前目录,并使用当前目录的高级名称作为快捷方式名称
hp add
要添加可以打开在集编辑器中的文件的快捷方式
hp add init.vim # will create a shortcut to init.vim named `init.vim`
hp add init.vim vi # will create a shortcut to init.vim named `vi`
要删除名为 example
的快捷方式
hp rm example # can be used from any location
hp rm # can be used within the "example" directory
hp remove example # long form of rm command
要跳转到名为 example
的目录
hp example
要列出所有已保存的快捷方式
hp ls # shortened form
hp list # long form
依赖关系
~5–15MB
~192K SLoC