这是一个统一管理 macOS 和 Linux 环境配置的仓库,旨在提供一个现代化、高效且跨平台的命令行工作环境.
- 模块化: 配置按功能拆分到
lib/目录下,由.bashrc按需加载,结构清晰,易于管理. - 自动化安装: 通过
./install.sh脚本一键完成环境部署,包括软件安装、配置链接等. - 跨平台兼容: 无缝支持 macOS 和 Linux,并为不同系统提供特定的安装逻辑.
- 智能适配: 安装脚本能自动检测运行环境 (如操作系统、所在地区),并选择最优的安装方式 (如包管理器、镜像源).
此仓库不仅仅是配置的堆砌,更是一套精心整合的现代化工具集:
- 增强 Shell:
- 高效 Git 工作流:
- 现代化的命令行工具:
- eza:
ls的现代替代品,图标支持、颜色丰富、Git 集成. - bat:
cat的替代品,支持语法高亮和 Git 集成. - ripgrep (rg): 极速的文件内容搜索工具,
grep的强力替代. - fzf: 通用的命令行模糊搜索器,可与众多工具集成.
- eza:
- 强大的文本编辑器:
- Vim 作为主力编辑器,通过
vim-plug管理插件. - 预装了代码格式化、Git 集成、快速导航等实用插件.
- Vim 作为主力编辑器,通过
在新机器上,只需克隆仓库并执行安装脚本:
git clone https://github.com/in64/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && ./install.sh脚本会自动完成以下所有工作:
- 检测操作系统 (macOS 或 Linux).
- 智能网络优化: 如果检测到在中国大陆,将自动为 Homebrew、GitHub、vim-plug 等设置镜像或代理,加速下载.
- 安装软件包:
- 在 macOS 上, 使用 Homebrew 安装必要的工具.
- 在 Linux (Debian/Ubuntu) 上, 使用
apt安装基础包,并从 GitHub Releases 自动下载安装eza,delta等工具的最新二进制版本到~/.local/bin.
- 链接配置文件: 自动将
home/目录下的配置文件链接到您的主目录. - 安装 Vim 插件: 自动下载
vim-plug并安装/更新所有插件.
安装完成后, 重启 Shell 或运行 source ~/.bashrc 即可生效.
install.sh: 主安装脚本,是整个自动化流程的入口.home/: 存放所有需要链接到$HOME目录的配置文件..bashrc: Shell 的主配置文件,负责加载lib/中的模块..gitconfig: Git 全局配置,集成了 delta 并通过include加载私有配置..vimrc: Vim 配置文件及插件列表..config/: 存放遵循 XDG 规范的配置文件,如starship,htop等.
lib/: 存放被.bashrc加载的模块化 Shell 脚本.aliases.sh: 定义了大量提高效率的别名.exports.sh: 设置环境变量.functions.sh: 定义通用的 Shell 函数.path.sh: 管理PATH环境变量.
本节详细介绍各个工具的配置亮点,帮助您快速上手.
~/.bashrc: 作为 Shell 的入口,负责加载lib/目录下的所有模块化脚本,并初始化starship和zoxide.lib/functions.sh: 定义了mkcd函数,用于创建目录并立即进入.~/.config/starship.toml: 配置 Starship 提示符,使其简洁且信息丰富.
| 别名 | 命令 | 说明 |
|---|---|---|
g |
git |
git 命令的缩写. |
ga |
git add |
添加文件到暂存区. |
gaa |
git add --all |
添加所有变动文件到暂存区. |
gap |
git add -p |
以交互方式添加文件的部分内容. |
gb |
git branch |
列出、创建或删除分支. |
gc |
git commit -v |
提交暂存的更改 (带详细 diff). |
gca |
git commit -v -a |
提交所有已跟踪文件的更改. |
gcam |
git commit -v -a -m |
附带消息提交所有已跟踪文件的更改. |
gcm |
git commit -m |
附带消息提交暂存的更改. |
gco |
git checkout |
切换分支或恢复工作区文件. |
gcb |
git checkout -b |
创建并切换到新分支. |
gd |
git diff |
查看工作区与暂存区的差异. |
gds |
git diff --staged |
查看暂存区与上次提交的差异. |
glog |
git log --graph ... |
以美化的图形格式显示提交日志. |
gp |
git push |
推送提交到远程仓库. |
gpf |
git push --force-with-lease |
安全地强制推送. |
gpl |
git pull --rebase |
拉取远程更改并变基. |
gs |
git status |
显示工作区状态. |
ls |
eza |
ls 的现代替代品 (如果 eza 不存在则为 ls --color=auto). |
ll |
eza -l |
以长列表格式显示文件. |
la |
eza -la |
以长列表格式显示所有文件 (包括隐藏文件). |
cd |
cd -P |
切换目录,解析物理路径. |
vi |
vim |
使用 vim 打开文件. |
tmux |
tmux -2 |
以 256 色模式启动 tmux. |
grep |
grep --color=auto -I |
带颜色的 grep, 忽略二进制文件. |
pkill |
pkill -u $USER |
杀死当前用户的所有进程. |
pw |
pwd |
显示当前工作目录. |
cat |
bat |
cat 的现代替代品 (如果 bat 不存在则无此别名). |
~/.gitconfig: 核心配置文件,集成了delta并通过include加载~/.gitconfig.local中的私有配置.~/.tigrc: 为 Tig 配置了视图列和颜色主题,优化了日志浏览体验.
这些别名需要在 git 命令后使用, 例如 git lg.
| 别名 | 命令 | 说明 |
|---|---|---|
lg |
log --color --graph --pretty |
以图形化方式显示简化的日志. |
df |
difftool |
使用配置的 difftool (delta) 查看差异. |
ci |
commit |
提交. |
co |
checkout |
切换分支. |
st |
status |
查看状态. |
br |
branch |
分支操作. |
last |
log -1 HEAD |
显示最近一次的提交. |
ls |
ls-files |
列出 Git 跟踪的文件. |
通过 vim-plug 管理,提供了现代化的编辑体验. 领键 (Leader) 设置为分号 ;.
| 插件 | 功能说明 |
|---|---|
junegunn/fzf.vim |
模糊搜索神器,用于快速查找文件、缓冲区、历史记录等. |
ludovicchabant/vim-gutentags |
在后台自动管理 tags 文件,实现无缝的代码定义跳转. |
bling/vim-airline |
一个高度可定制的美观状态栏,显示各种有用信息. |
vim-airline/vim-airline-themes |
为 vim-airline 提供多种主题样式. |
nathanaelkane/vim-indent-guides |
以可视化的方式显示缩进线,帮助保持代码整洁. |
airblade/vim-gitgutter |
在编辑器侧边栏 (sign column) 显示当前文件的 Git diff 信息 (增/删/改). |
vim-scripts/a.vim |
在 C/C++ 的头文件 (.h) 和源文件 (.cpp) 之间快速切换. |
tsaleh/vim-tmux |
增强 Vim 和 Tmux 之间的集成,例如在面板间无缝导航. |
junegunn/vim-easy-align |
一个简单的对齐工具,可以按等号、逗号等符号对齐代码块. |
easymotion/vim-easymotion |
极大地增强了屏幕内的光标移动能力,实现指哪打哪. |
scrooloose/nerdcommenter |
提供了强大的代码注释功能,支持多种语言和注释风格. |
google/yapf |
Google 出品的 Python 代码格式化工具. |
rhysd/vim-clang-format |
集成了 clang-format, 用于格式化 C, C++, Obj-C 代码. |
| 快捷键 | 模式 | 功能 |
|---|---|---|
<Leader> |
- | 设置为 分号 (;). |
<F4> |
Normal | 执行 q 寄存器中的宏. |
<C-N> |
Normal | 切换到下一个标签页 (:tn). |
<Leader>ch |
Normal | 切换头文件/源文件 (:A). |
<C-]> |
Normal | 跳转到标签定义 (当有多个匹配时, g<C-]> 会列出所有). |
<Enter> |
Visual | 使用 EasyAlign 对齐选中的代码. |
ga |
Normal/Visual | EasyAlign 的快捷方式. |
s<char><char> |
Normal | 使用 EasyMotion 快速跳转到以这两个字符开头的位置. |
mm |
Normal | 跳转到下一个 Git Hunk (修改块). |
mn |
Normal | 跳转到上一个 Git Hunk. |
mr |
Normal | 撤销当前光标所在 Hunk 的修改. |
<C-p> |
Normal | 使用 fzf 模糊搜索 Git 仓库中的文件 (:GFiles). |
<Leader>b |
Normal | 使用 fzf 模糊搜索已打开的缓冲区 (:Buffers). |
<Leader>f |
Normal | 使用 fzf 和 ripgrep 搜索项目中的文本内容 (:Rg). |
<C-J> |
Normal/Insert | 格式化当前代码 (支持 Python, C, C++). |
:JsonFormat |
Command | 将当前文件作为 JSON 进行格式化. |
配置了基本的快捷键,使其更符合直觉. 前缀键 (Prefix) 为默认的 Ctrl-b.
| 快捷键 | 功能 |
|---|---|
Prefix s |
垂直分割窗口 (当前面板下方). |
Prefix v |
水平分割窗口 (当前面板右侧). |
Prefix h / j / k / l |
切换到左 / 下 / 上 / 右侧的面板. |
Prefix < / > |
向左 / 右调整当前面板大小. |
Prefix - / + |
向下 / 上调整当前面板大小. |
Prefix : |
进入命令提示符. |
其他设置:
- 窗口和面板的编号从
1开始. - 开启
vi模式, 可以在复制模式下使用vi的按键进行导航和选择.
.editorconfig: 为不同的文件类型定义了一致的编码风格 (如缩进大小、字符集), 确保在不同编辑器中代码风格统一..config/htop/htoprc:htop的配置文件, 保存了列的显示、排序方式、颜色主题等界面设置. 通常由htop自身修改.
为了在不修改核心 dotfiles 的前提下进行个性化配置,本项目支持以下方式:
-
Git 私有配置: 在
~/.gitconfig.local文件中添加您的个人信息 (用户名, 邮箱等). 此文件已被.gitconfig默认包含,并被.gitignore忽略.# ~/.gitconfig.local [user] name = Your Name email = your.email@example.com
-
Shell 私有配置: 可以创建一个
~/.bashrc.local文件 (需手动创建),用于存放您不想提交到仓库的个人别名、函数或环境变量. 然后在home/.bashrc文件末尾添加source ~/.bashrc.local来加载它.