跳转至

命令行工具优化

1. 为什么要优化命令行工具

作为一个每天要在终端里待好几个小时的开发者,我一直认为命令行环境的舒适度直接影响工作效率。一个漂亮、高效、智能的终端环境,不仅能让你心情愉悦,还能帮你节省大量时间。

以前我用的是 Oh My Zsh,虽然功能强大,但总感觉有点臃肿,启动速度也不够快。后来我发现了一系列更轻量、更现代化的工具,它们组合起来形成了一个既美观又高效的命令行环境。

2. 工具清单与选择理由

我选择的这些工具,都是经过实际使用和对比后挑选出来的,它们各有各的特色,但组合起来却非常和谐:

工具 功能 选择理由
starship 命令提示符 轻量、快速、高度可定制,支持各种语言和框架的状态显示
atuin 命令历史管理 智能搜索历史命令,支持跨设备同步,比默认历史功能强大得多
lsd 文件列表 彩色输出,支持图标,比默认的 ls 命令好看太多
fzf 模糊搜索 快速搜索文件、历史命令等,大幅提升操作效率
zoxide 目录导航 智能路径跳转,比 cd 命令方便多了
mise SDK 版本管理 统一管理所有编程语言的版本,告别版本冲突
tldr 命令文档 提供简洁的命令使用示例,比 man 页更易懂
chezmoi 配置管理 版本控制你的 dotfiles,轻松同步多台设备的配置
fastfetch 系统信息展示 美观地显示系统信息,比 neofetch 更快
lazygit Git 客户端 终端里的 Git GUI,操作 Git 更直观
zellij 终端多路复用 现代版的 tmux,界面更友好,配置更简单
jd JSON 解析器 快速格式化和查询 JSON 数据,开发 API 必备

3. 工具安装与配置

3.1 Starship(命令提示符)

为什么不用 Oh My Zsh 了?

Oh My Zsh 确实功能强大,但我发现它有几个问题: - 启动速度慢:每次打开终端都要等上一两秒 - 过于臃肿:内置了太多我用不到的插件 - 配置复杂:想要定制化需要改很多配置

而 Starship 则完美解决了这些问题: - 启动速度极快:几乎是瞬间启动 - 轻量简洁:只提供核心功能,其他功能通过插件扩展 - 配置简单:一个配置文件搞定所有设置 - 跨 shell 支持:支持 bash、zsh、fish 等多种 shell

安装与配置

# 安装 starship
curl -sS https://starship.rs/install.sh | sh

# 在 .bashrc 或 .zshrc 中添加
# ~/.bashrc
eval "$(starship init bash)"

# 或 ~/.zshrc
eval "$(starship init zsh)"

# 创建配置文件
mkdir -p ~/.config
cat > ~/.config/starship.toml << 'EOF'
[character]
success_symbol = "❯"
error_symbol = "✗"

[git_branch]
format = "[$branch]($style) "

[python]
format = "[🐍 $version]($style) "

[nodejs]
format = "[⬢ $version]($style) "

[java]
format = "[☕ $version]($style) "

[directory]
format = "[ $path]($style) "
EOF

3.2 Atuin(命令历史管理)

Atuin 是一个革命性的命令历史工具,它不仅能记录你的所有命令,还能智能搜索和跨设备同步。

# 安装 atuin
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

# 初始化 atuin
atuin init bash >> ~/.bashrc
# 或 atuin init zsh >> ~/.zshrc

# 导入历史命令
atuin import auto

现在你可以用 Ctrl+R 来搜索历史命令,支持模糊搜索,比默认的历史搜索好用100倍!

3.3 LSD(文件列表)

LSD 是 ls 命令的替代品,它提供了彩色输出和图标支持,让文件列表看起来更加美观。

# 安装 lsd
sudo apt install lsd

# 在 .bashrc 或 .zshrc 中添加别名
# ~/.bashrc
alias ls='lsd'
alias l='ls -la'
alias la='ls -la'
alias ll='ls -la'

3.4 FZF(模糊搜索)

FZF 是一个通用的模糊搜索工具,它可以搜索文件、历史命令、进程等,大幅提升操作效率。

# 安装 fzf
sudo apt install fzf

# 安装 fzf 键绑定和补全
$(brew --prefix)/opt/fzf/install

# 在 .bashrc 或 .zshrc 中添加
# ~/.bashrc
source <(fzf --completion)
source <(fzf --key-bindings)

现在你可以用 Ctrl+T 来搜索文件,用 Alt+C 来搜索目录,非常方便!

3.5 Zoxide(目录导航)

Zoxide 是一个智能的目录导航工具,它会记住你常用的目录,让你可以快速跳转到任何目录。

# 安装 zoxide
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

# 在 .bashrc 或 .zshrc 中添加
# ~/.bashrc
eval "$(zoxide init bash)"
# 或 ~/.zshrc
eval "$(zoxide init zsh)"

现在你可以用 z 命令来快速跳转到目录,比如 z projects 就会跳转到你最常用的 projects 目录。

3.6 Mise(SDK 版本管理)

Mise 是一个统一的 SDK 版本管理工具,它可以管理 Java、Node.js、Python、Go 等多种编程语言的版本。

# 安装 mise
curl https://mise.run | sh

# 在 .bashrc 或 .zshrc 中添加
# ~/.bashrc
eval "$(mise activate bash)"
# 或 ~/.zshrc
eval "$(mise activate zsh)"

3.7 TLDR(命令文档)

TLDR 提供了简洁的命令使用示例,比 man 页更易懂,非常适合快速查找命令用法。

# 安装 tldr
sudo apt install tldr

# 更新 tldr 数据库
tldr --update

现在你可以用 tldr <命令> 来查看简洁的命令使用示例,比如 tldr git

3.8 Chezmoi(配置管理)

Chezmoi 是一个 dotfiles 管理工具,它可以用 Git 版本控制你的配置文件,轻松同步多台设备的配置。

# 安装 chezmoi
sh -c "$(curl -fsLS get.chezmoi.io)"

# 初始化 chezmoi
chezmoi init

# 添加配置文件
chezmoi add ~/.bashrc ~/.zshrc ~/.config/starship.toml

# 提交更改
chezmoi cd && git add . && git commit -m "Initial commit"

3.9 Fastfetch(系统信息展示)

Fastfetch 是一个系统信息展示工具,它比 neofetch 更快,界面也更美观。

# 安装 fastfetch
sudo apt install fastfetch

# 在 .bashrc 或 .zshrc 中添加,每次打开终端时显示
# ~/.bashrc
fastfetch

3.10 Lazygit(Git 客户端)

Lazygit 是一个终端里的 Git GUI,它提供了直观的界面来操作 Git,比命令行 Git 更方便。

# 安装 lazygit
go install github.com/jesseduffield/lazygit@latest

# 在 .bashrc 或 .zshrc 中添加别名
# ~/.bashrc
alias lg='lazygit'

现在你可以用 lg 命令来打开 lazygit,图形化操作 Git。

3.11 Zellij(终端多路复用)

Zellij 是一个现代的终端多路复用工具,它的界面更友好,配置更简单,比 tmux 更容易上手。

# 安装 zellij
curl -L https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz | tar -xzf -
sudo mv zellij /usr/local/bin/

# 在 .bashrc 或 .zshrc 中添加别名
# ~/.bashrc
alias zj='zellij'

3.12 JD(JSON 解析器)

JD 是一个快速的 JSON 解析器,它可以格式化和查询 JSON 数据,非常适合开发 API 时使用。

# 安装 jd
curl -L https://github.com/josephburnett/jd/releases/latest/download/jd-linux-amd64 > ~/.local/bin/jd
chmod +x ~/.local/bin/jd

现在你可以用 jd 命令来格式化和查询 JSON 数据,比如 curl api.example.com | jd

4. 整体配置

为了让这些工具协同工作,我在 ~/.bashrc~/.zshrc 中添加了以下配置:

# ~/.bashrc

# Starship 命令提示符
eval "$(starship init bash)"

# Atuin 命令历史
eval "$(atuin init bash)"

# Zoxide 目录导航
eval "$(zoxide init bash)"

# Mise SDK 管理
eval "$(mise activate bash)"

# FZF 模糊搜索
source <(fzf --completion)
source <(fzf --key-bindings)

# 别名
alias ls='lsd'
alias l='ls -la'
alias la='ls -la'
alias ll='ls -la'
alias lg='lazygit'
alias zj='zellij'

# 启动时显示系统信息
fastfetch

5. 使用体验

现在我的终端环境已经非常完美了:

  • 美观:彩色的命令提示符,带有各种语言和框架的状态显示,文件列表带有图标
  • 高效:智能的目录导航,快速的命令历史搜索,模糊搜索文件和目录
  • 智能:自动切换 SDK 版本,简洁的命令文档,图形化的 Git 操作
  • 稳定:所有工具都是轻量级的,启动速度快,运行稳定

每天打开终端,看到漂亮的系统信息和命令提示符,心情都会变好。而且这些工具确实帮我节省了很多时间,让我能够更专注于代码开发。

6. 总结

一个好的命令行环境,就像一个好的工作台,它能让你更加高效地工作,也能让你更加享受工作的过程。

我选择的这些工具,并不是什么新奇的玩意儿,它们都是经过社区验证的优秀工具。但组合起来,却形成了一个既美观又高效的命令行环境。

如果你也像我一样,每天要在终端里待很长时间,不妨试试这些工具,相信它们会给你带来全新的命令行体验。

毕竟,人生苦短,为什么不用点漂亮舒服的工具呢?