4 个版本

0.1.5 2021 年 12 月 2 日
0.1.4 2021 年 12 月 2 日
0.1.1 2020 年 11 月 22 日
0.1.0 2020 年 9 月 24 日

#1339文件系统

每月 26 次下载
用于 rualdi

AGPL-3.0-or-later

45KB
1K 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
  • 使用 fzftokioasync

目录

简介

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

入门指南

第一步:安装 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

第二步:将 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)提供了一种使用 rualdi 的方法,类似于 formarks(一个 zsh 插件),允许使用 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

Crates 文档


lib.rs:

解析 TOML 格式的 rad 配置文件的模块

依赖项

~4–15MB
~154K SLoC