乐趣区

关于前端:基于-Rust-编写的实用命令行工具

作者:Mahmoud Ashraf
翻译:New Frontend

作为一个软件工程师,我大部分工夫都花在终端模拟器下,因而在高效的终端模拟器下应用高效的工具很有必要。

许多基于 Rust 编写的软件帮我达成了这一点。这篇文章会介绍这些工具。

tl;dr

  • [alacritty] 应用 GPU 减速的跨平台终端模拟器
  • [starship] ???? 超级快、反对各种订制的极简命令行提示符,反对任意 shell
  • [exa] ls 现代版
  • [bat] 反对更多个性的 cat 克隆
  • [delta] git、diff 输入查看器
  • [zoxide] 更快捷地浏览文件系统
  • [ripgrep] 基于正则表达式递归搜寻目录
  • [fd] 简略、疾速、用户敌对的 find 替代品
  • [bottom] 又一个跨平台的图形化过程 / 零碎查看器
  • [tldr] ???? 众人一起编写的终端命令速查卡
  • [spotify-tui] Spotify 客户端命令行版 ????
  • [gitui] 超级 ???? 快的 git 字符界面客户端

Alacritty

首先介绍 Alacritty,这是最快的终端模拟器之一,因为它应用 GPU 渲染,而且它也是跨平台的。

配色计划、字体、透明度、键盘快捷键等都能定制。

Alacritty 不反对合字,但你能够用这个反对合字的分支。如果你用 Arch 的话,也能够通过 [aur] 装置。

Starship

我以前的命令行提示符用 zsh + powerlevel9k,起初转用 powerlevel10k,但在开新 shell 时我都察看到了提早。starship 则能立即启动。

它能够搭配任何 shell 应用,比方 bash、zsh、fish,甚至 powerShell.

上面的截图显示了我定制的提示符。

Exa

exa 是 ls 命令的一个实现,但自带色调和图标,渲染也十分快。

我建了一个别名,用 exa 代替 ls.

if ["$(command -v exa)" ]; then
    unalias -m 'll'
    unalias -m 'l'
    unalias -m 'la'
    unalias -m 'ls'
    alias ls='exa -G  --color auto --icons -a -s type'
    alias ll='exa -l --color always --icons -a -s type'
fi

我的 lsll 命令显示后果:

Bat

bat 是 cat 命令的一个实现,但加上了语法高亮。

我也给它建了个别名(我用 Nord 主题)。

if ["$(command -v bat)" ]; then
  unalias -m 'cat'
  alias cat='bat -pp --theme="Nord"'
fi

Delta

delta 加强了 git diff 的显示成果,包含语法高亮、行号、双栏显示。

想应用 delta 的话,须要在 .gitconfig 中加上:

[core]
  pager = delta
[interactive]
  diffFilter = delta --color-only
[delta]
  side-by-side = true
  line-numbers-left-format = ""line-numbers-right-format ="│ "
  syntax-theme = Nord

在下面的配置中,delta 成为 git 命令输入的默认 pager,开启了双栏显示,并将主题设为 Nord。你能够运行以下命令列出所有主题,并从中抉择想用的主题。

delta --list-syntax-themes

Zoxide

我没有应用任何文件浏览器,只用 cdls

比方说,我的家目录下有一个寄存各种我的项目的 projects 目录,如果我想拜访其中一个我的项目,我须要输出

cd ~/projects/mahmoudashraf.dev

应用 zoxide 后,只有第一次须要输出

z ~/projects/mahmoudashraf.dev

之后不论当前目录是哪里,简略输出几个字母就能够再次拜访这一目录

z mah

Ripgrep

这是一个跨平台的命令行工具,能够应用正则表达式搜寻目录下的文件内容。

举荐浏览 ripgrep is faster than {grep, ag, git grep, ucg, pt, sift} 一文。

上面是一些例子:

# 基于特定正则表达式搜寻 javascript 文件
rg tjs "import React"

rg "\.content" -g "*.pug"

# 不仅能够查找,还能够替换,相似 sed 命令的查找替换性能
rg fast README.md --replace FAST

Fd

find 命令更敌对,也更快。

默认状况下会疏忽 .gitignore 中指定须要疏忽的文件。

比方,把一些 png 格局的文件转换为 jpeg 格局:

fd -e png -x convert {} {.}.jpeg

再比方删除文件:

fd -H '^\.DS_Store$' -tf -X rm

bottom

它不是 top ???? 是 bottom

它是一个跨平台的零碎监视器。

Tldr

tldr 为各种命令行工具提供了速查卡,能够省下浏览残缺的 man 帮忙手册的工夫。

更多工具

  • 如果你嫌 Spotify 的官网客户端太轻便,能够应用 spotify-tui 这个轻量级替代品。
  • 如果你喜爱通过 UI 界面操作 git,能够看下 gitui

应用 Rust 编写的命令行工具和其余工具还有很多,详见 lib.rs/command-line-utilities。

退出移动版