10 个版本

0.2.3 2021年12月2日
0.2.1 2020年11月22日
0.1.6 2020年10月24日
0.1.5 2020年9月28日

#671 in 文件系统

每月 42 次下载

AGPL-3.0 或更高版

130KB
3.5K SLoC

Rualdi (Rust 别名目录)

crates.io Crates.io Travis (.com) GitHub Workflow Status (branch) GitHub Workflow Status GitHub Workflow Status GitHub releases Crates.io Codecov

asciicast

待办事项

  • 在添加彩色输出后修复/添加测试
  • Bash 完整性
  • 不同地着色 %HASH 映射
  • 添加 bgTrueColor 支持
  • 配置中颜色被擦除
  • radf 函数设置颜色
  • radf 函数中使用 %HASH
  • 使用 fzf: tokioasync

目录

简介

Rualdi 允许您为目录创建别名,并提供对内置 cd 命令的封装,以便轻松更改工作目录。您还可以添加指向别名的环境变量。在您的环境中源的所有变量都以前缀 RAD_ 开头。

zoxide 代码的启发。

示例

rada workdir           # Add current directory with workdir as alias
rada www /var/www      # Add /var/www directory with www as alias
rada stuff ~/stuff     # Works with home tilde alias

radax workdir          # Add current directory with workdir as alias
                       # and add environment variable named RAD_WORKDIR
                       # in current environment and in configuration file

radax workdir . wd     # Add current directory with workdir as alias
                       # and add environment variable named RAD_WD
                       # in current environment and to the configuration file

radx workdir wd        # Add environment variable named RAD_WD which points
                       # on alias workdir in current environment
                       # and to the configuration file

radx workdir           # Add environment variable named RAD_WORKDIR
                       # which points on alias workdir in current environment
                       # and to the configuration file

radxn workdir wd       # Add environment variable named RAD_WD which points
                       # on alias workdir in current environment
                       # without adding it to the configuration file

rad www/some-site      # Perform cd in /var/www/some-site
rad -                  # Go back to previous directory by cd'ing to it
rad -4                 # With zsh, this acts as a pushd wrapper

radr workdir           # Remove workdir alias and environment variable associated if exists
radr www stuff         # Works with multiple aliases at same time

radrx workdir          # Remove environment variable which points on alias workdir

radl                   # List aliases and environment variables

radf                   # List directories with fzf and cd to selection
                       # There are several more options with this function explained below

入门

第 1 步:安装 rualdi

从 Cargo 仓库安装

cargo install rualdi -f

从源代码安装

cargo build --release
cp target/release/rualdi <path>

其中 <path> 是您存储二进制文件的路径。

在 Debian 上安装

从源代码安装
cargo install cargo-deb
cargo deb
sudo dpkg -i /target/debian/rualdi_<version>_<arch>.deb
从 .deb 预编译版本安装

您可以从发布页面下载预编译的 .deb 软件包并将其添加到运行中。

sudo dpkg -i /target/debian/rualdi_<version>_<arch>.deb

其他(通过预编译的二进制文件)GitHub releases

或者,您也可以从发布页面下载预编译的二进制文件并将其添加到您的 PATH

第 2 步:将 rualdi 添加到您的 shell

目前仅支持 bashzsh

bash

将以下行添加到您的 ~/.bashrc

eval "$(rualdi init bash)"

zsh

将以下行添加到您的 ~/.zshrc

eval "$(rualdi init zsh)"

配置

init 标志

  • --cmd:将 rad 命令(及其对应别名)更改为其他内容。

环境变量

  • $_RAD_ALIASES_DIRrualdi 将存储别名配置文件的目录(默认:平台特定;有关更多信息,请参阅 [dirs-next 文档])
  • $_RAD_NO_ECHO:当设置为 1 时,rad 在导航到匹配的目录之前不会打印该目录
  • $_RAD_RESOLVE_SYMLINKS:当设置为 1 时,rad 在打印匹配的目录之前会解析符号链接。

[colors] 部分

默认使用的颜色如下,可以在 $_RAD_ALIASES_DIR/rualdi.toml 文件中找到。

[colors]
name = "bright yellow"
separator = "bright cyan"
path = "magenta"

可用的颜色有

  • redbright red
  • yellowbright yellow
  • greenbright green
  • bluebright blue
  • cyanbright cyan
  • magentabright magenta
  • whitebright white
  • blackbright black

[alias_map] 部分

有时路径可能会相当长,因此可以创建一个哈希(实际上是一个 IndexMap),将常见的路径映射到如下所示的内容

/Users/user/.config/zsh/zsh.d = %ZDOTDIR/zsh.d

可以在 rualdi.toml 中进行配置,并且可以使用波浪号(~)和环境变量。左侧是将在前面加上 % 并显示的内容。

注意: 建议将最具体的变量放在哈希的前面,将最不具体的变量放在后面。

[alias_hash]
ZDOTDIR = "$ZDOTDIR"
XDG_CONFIG_HOME = "/Users/user/.config"
XDG_CACHE_HOME = "~/.cache"
XDG_DATA_HOME = "${HOME}/.local/share"
HOME = "$HOME"

已经有一些这些映射可以实施,并且可以通过三个中的任何一个来启用

[alias_hash]
use_default = "on"
use_default = "1" # Must be a string
use_default = "yes"

fzf 集成

需求:

  • fzf

命令 radf(或<your_cmd>f)提供了一种像使用formarks(一个zsh插件)一样使用rualdi的方法,允许您使用fzf显示目录别名,然后使用cd进入选择。

无参数

# A query here is optional
radf <query>

pushd 包装器

# This can be any digit
radf -3

最近访问的目录

# A query here is optional
radf -d <query>

rad 包装器

# Will also go back to most recently visited directory
radf -
rad -

# If query is an exact match with an alias, then it's the same behavior as `rad`
radf <query>

完成

目前,只有zsh补全可用。它与fzf-tab配合使用最好,当使用<TAB>时,它会使用fzf补全您的命令。

安装

此命令将补全打印到stdout,因此可以将其重定向到文件并放置在您的fpath中。这些补全仅适用于实际的rualdi二进制文件,因此不会与设置的所有别名一起使用,因为它们都是单独的函数。

要获取别名的补全,请将文件completions/_rualdi_funcs移动到您的fpath中。

rualdi completions shell zsh > _rualdi

额外

子命令别名

使用rualdi的另一种方法是将其本身设置为别名,并使用每个子命令的自己的别名。

例如,在您的.zshrc.bashrc中,放置以下内容alias r="rualdi"。然后使用以下别名

r a    # rualdi add
r ax   # rualdi add-env
r i    # rualdi init
r l    # rualdi list
r la   # rualdi list-alias
r lx   # rualdi list-env
r r    # rualdi remove
r rx   # rualdi remove-env
r res  # rualdi resolve
r resx # rualdi resolve-env

r comp # rualdi completions

Crate 文档

依赖项

~6–18MB
~180K SLoC