安装配置和使用zoxide:Linux/macOS的智能cd命令
本文介绍如何安装配置和使用zoxide的方法,它属于Linux/macOS的智能cd命令。经过实验,在Linux/macOS之间导航时,使用zoxide确实很有帮助,这是一个shell插件,可以帮助提高在shell工作时的生产力,zoxide插件是由z和z.lua启发的常见cd命令的替代品,它通过使用排名算法跟踪频繁访问的目录,以导航到最佳匹配,从而简化了任务,只需几次按键,就可以导航到所需的目录。
安装zoxide、安装fzf,及在shell中加入zoxide
一、安装zoxide
Zoxide可在多个平台上工作,可按如下方式安装。
1、在Linux上安装zoxide
Zoxide很容易在Linux系统上安装,因为它在许多发行版的默认包存储库中都可用。
使用以下命令在Linux发行版上安装zoxide:
##在Debian/Ubuntu上
sudo apt install zoxide
##CentOS 8/Rocky Linux 8/Alma Linux 8上
sudo dnf copr enable atim/zoxide
sudo dnf install zoxide
##基于Arch Linux的系统
sudo yay -Sy zoxide-bin
##在Fedora上
sudo dnf install zoxide
##在Alpine Linux上
sudo apk add zoxide
##在Manjaro上
sudo pacman -S zoxide
您也可以使用下面的脚本在系统上安装zoxide:
curl -sS https://webinstall.dev/zoxide | bash
导出路径:
export PATH="/home/$USER/.local/bin:$PATH"
2、在macOS上安装zoxide
在macOS上,可以使用以下命令安装zoxide:
##HomeBrew
brew install zoxide
##MacPorts
port install zoxide
##conda-forge
conda install -c conda-forge zoxide
对于Linux和macOS系统,可以使用以下命令从crates存储库安装zoxide:
cargo install zoxide --locked
按照以下步骤验证安装:
$ zoxide -V
zoxide v0.7.9
二、安装fzf
zoxide使用fzf(命令行模糊查找器)来提供交互式shell,可以按如下方式安装。
1、在Linux上
fzf在许多Linux发行版的默认软件包存储库中可用:
##在Debian/Ubuntu上
sudo apt-get install fzf
##在Fedora上
sudo dnf install fzf
##在Arch Linux上
sudo pacman -S fzf
##在openSUSE上
sudo zypper install fzf
或者,从git repo安装fzf,如下所示:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
source ~/.bashrc
2、在macOS上
使用HomeBrew安装fzf,如下所示:
$ brew install fzf
# To install useful key bindings and fuzzy completion:
$(brew --prefix)/opt/fzf/install
三、在shell中加入zoxide
为了能够使用zoxide,您需要将其添加到shell中,如下所示。
1、适用于Bash/Zsh
使用您喜爱的编辑器打开bash文件:
$ vim ~/.bashrc
##或
$ vim ~/.zshrc
在打开的文件中,添加以下行:
eval "$(zoxide init bash)"
保存文件并获取配置文件
source ~/.bashrc
##或
source ~/.zshrc
2、适用于Fish
打开文件:
vim ~/.config/fish/config.fish
现在将下面的行添加到其中:
zoxide init fish | source
3、适用于Xonsh
打开以下文件进行编辑:
vim ~/.xonshrc
将下面的行添加到其中:
execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
4、适用于Nushell
通过在Nushell中执行命令查找配置文件:
config path
将以下行添加到其中:
startup = ["zoxide init nushell --hook prompt | save ~/.zoxide.nu", "source ~/.zoxide.nu"]
配置zoxide
在zoxide中有几种配置。在执行zoxide init之前,正常设置zoxide的环境变量。这些环境变量设置如下:
_ZO_DATA_DIR:用于指定存储数据库的目录。默认目录如下:
Linux/BSD:$XDG_DATA_HOME或$HOME/.local/share
macOS:$HOME/Library/Application Support
_ZO_ECHO:当设置为1时,用于在导航到匹配的目录之前打印匹配的目录。
_ZO_EXCLUDE_DIRS:用于包括数据库中的指定目录。默认设置为“$HOME”。分隔符(:)可用于例如$HOME:$HOME/private/*。
_ZO_MAXAGE:配置老化算法,该算法限制数据库中的最大条目数。
_ZO_RESOLVE_SYMLINKS:设置为1时,z将在将目录添加到数据库之前解析符号链接。
_ZO_FZF_OPTS:用于设置交互选择期间要执行的自定义FZF选项。
在调用zoxide init时,可以对zoxide进行其他配置,例如:
–cmd:这用于更改已定义别名(z和Zi)的前缀,例如-cmd j会将别名更改为(j,ji)。
–hook <HOOK>:这定义了zoxide增加目录分数的频率。以下参数可以与hook命令一起使用:
none–永远不会
prompt–提示每个shell
pwd–每当目录更改时
–no-aliases:用于定义无别名(z,zi),这些函数将作为__zoxide_z和__zoxide_zi提供。
使用Zoxide
Zoxide的工作方式与cd命令类似,但现在有更多附加功能。使用默认的z别名,使用语法导航到目录:
z foo
例如:
z /home/thor/Downloads/
样本输出:
要退出到上一个目录,请使用以下命令:
z -
您也可以使用以下命令向上cd一级:
z ..
由于两个目录共享一些相似的名称(foo),您可以使用语法启动交互式shell进行选择:
zi foo
例如,在这里,我有两个目录/home/thor/Downloads和/home/thor/new/Downloads,我已经导航到这两个文件夹,现在我将启动交互式shell进行选择,如下所示:
zi Downloads
样本输出:
您还可以使用以下语法启动交互式shell:
z foo<SPACE>+<TAB>
在这里,您将运行以下命令:
z Downloads
然后按空格+TAB键查看输出:
如果您有多个同名(foo)的路径,Zoxide将记住它们,您可以使用提供的名称列表中的排名导航到它们。
您可以使用以下命令导航到与名称(foo)匹配的排名最高的目录:
z foo
例如,导航到/home/thor/Downloads/目录,该目录在此处排名最高,使用命令:
z Downloads
样本输出:
您还可以使用两个参数导航到排名最高的目录,以便更好地匹配,例如new/Downloads,如下所示:
z new Downloads
样本输出:
现在,您可以使用zoxide导航到所需的目录,并且它会记住所有目录,使导航变得如此简单,字符串更短。
另外,强调一下。zoxide有几个集成,默认情况下支持zsh-autocomplete。您可以按如下方式安装和使用它们,以Ranger为例:
这是一个文件管理器集成,可以通过运行命令在通常访问的目录之间跳转:
z <partial-name>
他的安装方式如下:
sudo git clone https://github.com/jchook/ranger-zoxide.git ~/.config/ranger/plugins/zoxide
例如,使用下面的部分命令导航到Downloads目录,然后按Enter键:
现在使用ranger在目录之间快速导航。当前zoxide有许多第三方集成,如vim、xplr、xxh、emacs。
结论
按照以上方法在Linux/macOS上安装zoxide并使用zoxide。在安装配置完成后,它将是一个更智能的cd命令,并将其用于简单的cd命令。