很棒的命令行工具

2025-06-07

很棒的命令行工具

大多数时候,当我不使用 Vim 时,我可能都在命令行里徘徊。值得庆幸的是,市面上不乏优秀的 CLI 工具。在这里,我想分享一些它们以及我的使用方法。

对于 TL;DR,滚动到底部,您会找到包含链接的简短列表。

tldr

人与太少

手册页是查找文档和了解程序工作原理的绝佳去处,但有时我们需要快速浏览某个工具的使用示例。例如,我总是记不住如何使用 发送 POST 请求curl

tldr就是这样做的——打印一个简短的描述,然后给出可能的使用方法。有了手头最常见的示例,我可以快速复制我需要的内容并运行。

色/z

我无法想象没有这个小脚本的生活。它会追踪我最常用的目录以及使用频率,然后让我只需输入部分路径即可跳转到相应的目录。

例如,当我想访问时~/projects/web/vimfromscratch,我只需输入z vimf,然后点击Enter

我还建议将默认命令名称从 更改为zj这样更容易操作)。您可以创建别名,也可以设置全局环境变量:

export _Z_CMD="j"

我必须提一下,您可以尝试一些替代方案:

diff-so-fancy

diff-so-fancy

此工具diff是or的直接替代品git diff。它的功能相同,但风格更独特。默认颜色更美观,并且 diff 功能可以显示同一行内的变化(见屏幕截图)。

为了使其成为默认的 Git 分页器,请运行以下命令:

git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"

然后,您还可以diff通过设置别名来替换默认值:

alias diff="diff-so-fancy"

蝙蝠

猫与蝙蝠

既然我们开始讨论语法高亮,你有没有想过这cat有点无聊?如果它能够高亮打印文件的语法,那不是很好吗?

这个问题的答案是batbat它为许多语言添加了语法高亮显示。此外,它与 Git 集成,因此它会显示你正在查看的文件中发生了哪些更改。

您可能想要更换旧型号:

alias cat="bat"

您可以通过导出来为您的手册页着色:

export MANPAGER="sh -c 'col -bx | bat -l man -p'"

对于其他有趣的集成,请查看README

ripgrep

使用 ripgrep 搜索 React 组件

Ripgrep是 Silver Searcher 的替代品ag。它的速度明显更快,并且还具有一些合理的默认行为,例如尊重你的.gitignore文件。

正如您在屏幕截图上看到的,输出很清晰,并且搜索模式在输出结果中突出显示,这很好。

埃克萨

常规 `ls` 与 `exa`

另一个可以替代内置ls命令的替代方案是Exa。同样,本文中的其他一些工具exa也提供了颜色突出显示和一些合理的默认设置,但总体上仍然与 API 兼容ls

alias ls="exa"

# I usually use this command instead
alias l="exa -lahF"

FD

常规 `find` 与 `fd`

到此时,您可能已经明白,如果有某个内置命令的替代品,我可能会安装它。

来看看fd,一个比 更快的替代方案find。 的问题find在于 ,我永远都记不住怎么用。应该是find myfile.py,还是find --name myfile.py,还是加一个短划线?我应该.在搜索模式之前还是之后添加?唉呀。

有了fd,一切总是那么简单fd myfile.py。同样,这也是为了更合理的默认值和漂亮的彩色输出(见截图)。

别忘了

alias find="fd"

频率

带有文件预览的 Fzf

哦对了,我把最酷的留到最后了。Fzf (模糊查找)是一个用 Go 编写的超快工具,它只做一件事:它接受一个行列表作为输入,然后让用户在其中进行模糊搜索以查找其中的文本。

虽然这听起来可能不太令人印象深刻,但有趣的部分始于应用程序。

例如,尝试

vim $(fzf)

系统会提示你一个文件列表,你可以在其中搜索。按下 后enter,选定的文件将在 Vim 中打开。

或者,您可以尝试按下Ctrl+R(在 Shell 中运行命令历史记录的命令)。现在,您可以在命令中进行模糊搜索,然后按下enter来执行它。

在搜索文件时,Fzf可以为您提供很好的预览(见截图),您只需要指定预览命令:

fzf --preview="bat {} --color=always"

还记得rupa/z脚本吗?Fzf它与它很好地集成,因此如果您z不带参数运行,您可以在最常用的目录中进行模糊搜索。

说实话,它的用途真是无穷无尽,没有极限。不妨试试浏览此页面上的示例

你用的这个东西是啥?

如果你想知道的话,我的设置基于以下内容:

太长不看

  • tldr用于快速查看使用示例
  • rupa/z用于在目录之间跳转
  • diff-sofancy实现更好的差异化
  • 替换cat
  • ripgrep用于在文本文件中搜索模式
  • exa色彩丰富且快速ls
  • fd的替代品find
  • Fzf用于模糊搜索

附言:我正在写一本关于 Vim 的开发者书籍。欢迎阅读

文章来源:https://dev.to/janis_t/awesome-command-line-tools-204n
PREV
使用 Express Sessions、Redis 和 Passport 进行 Node.js 会话管理 - 第 1 部分 redis-session-demo 概述 如何运行 工作原理 分支
NEXT
如何克服冒名顶替综合症?