Biến Terminal & Neovim thành "vũ khí" lập trình đa nền tảng chỉ với 1 dòng lệnh bằng Rust CLI & Dotfiles
Mỗi lần đổi máy hoặc cài lại hệ điều hành, lập trình viên lại phải cài công cụ và cấu hình lại Terminal, Shell, Neovim, WezTerm, Font và Dotfiles từ đầu.
Làm việc cross-platform càng phức tạp khi Windows, Linux và macOS có cách quản lý package, đường dẫn và cấu hình khác nhau.
Trong bài viết này, mình sẽ giới thiệu Dotfiles & CLI Manager dot được viết bằng Rust, giúp tự động hóa việc setup và đồng bộ môi trường lập trình trên nhiều nền tảng.
🚀 Một lệnh để setup môi trường
Dù bạn sử dụng Windows, Ubuntu, Arch Linux, WSL hay macOS, quá trình cài đặt chỉ mất vài phút.
🪟 Windows — PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/kachitaro/dotfiles/main/install.ps1))) -Full
🐧 Linux / WSL / macOS
curl -fsSL https://raw.githubusercontent.com/kachitaro/dotfiles/main/install.sh | bash -s -- --full
Script sẽ tự động:
- Nhận diện hệ điều hành.
- Cài package manager phù hợp: Scoop / Homebrew / Apt / Pacman.
- Tải binary
dotđược build sẵn từ GitHub Releases. - Cài đặt các CLI tools cần thiết.
- Thiết lập Dotfiles.
- Tạo và quản lý Symlink.
Mục tiêu là biến quá trình setup một máy mới từ hàng chục bước thủ công thành một lệnh duy nhất.
🏗️ Kiến trúc
Hệ thống sử dụng Dotfiles làm nguồn cấu hình trung tâm, kết hợp với Rust CLI để quản lý việc đồng bộ và triển khai configuration.
┌─────────────────────┐
│ Dotfiles Repository│
│ │
│ themes/theme.json │
│ config/ │
│ scripts/ │
└──────────┬──────────┘
│
▼
┌───────────────┐
│ Rust CLI │
│ `dot` │
└───────┬───────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Windows │ │ Linux │ │ macOS │
│ PowerShell│ │ Bash/Zsh │ │ Zsh │
└──────────┘ └──────────┘ └──────────┘
🌟 Những điểm nổi bật
🦀 1. Rust CLI — dot
Thay vì phụ thuộc vào nhiều shell script khác nhau, dot được xây dựng bằng Rust để xử lý các tác vụ quản lý Dotfiles một cách nhanh chóng và nhất quán.
Các lệnh cơ bản:
dot --help
# Thêm configuration vào Dotfiles
dot add ~/.config/alacritty
# Đồng bộ configuration và tạo symlink
dot inject
# Gỡ symlink
dot eject
# Cập nhật CLI lên phiên bản mới nhất
dot update
Tại sao sử dụng Rust?
- ⚡ Binary native, khởi động nhanh.
- 📦 Không cần runtime như Node.js hoặc Python.
- 🖥️ Hỗ trợ tốt cho Windows, Linux và macOS.
- 🔗 Phù hợp với các tác vụ filesystem và symlink.
- 📦 Có thể phát hành binary độc lập thông qua GitHub Releases.
🎨 2. Theme Engine — Đồng bộ màu sắc
Một vấn đề thường gặp khi sử dụng nhiều công cụ terminal là theme không đồng nhất.
Ví dụ:
- Neovim sử dụng một palette.
- WezTerm sử dụng palette khác.
- PowerShell lại có màu khác.
- Starship không cùng tone.
- Shell history hiển thị màu không nhất quán.
Thay vì chỉnh màu HEX trong nhiều file, hệ thống sử dụng một file duy nhất:
themes/theme.json
Ví dụ:
{
"name": "Catppuccin Mocha",
"colors": {
"background": "#1E1E2E",
"foreground": "#CDD6F4",
"blue": "#89B4FA",
"green": "#A6E3A1",
"red": "#F38BA8"
}
}
Sau khi thay đổi theme, chỉ cần chạy:
dot theme reload
Theme Engine sẽ tạo configuration tương ứng:
theme.lua → WezTerm / Neovim
theme.ps1 → PowerShell
theme.sh → Bash / Zsh
theme.toml → Atuin
Mô hình hoạt động:
┌─────────────────────┐
│ themes/theme.json │
│ Single Source Truth │
└──────────┬──────────┘
│
dot theme reload
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ WezTerm │ │ Neovim │ │ Shell │
│ Lua │ │ NvChad │ │ PS / Zsh │
└──────────┘ └──────────┘ └──────────┘
Kết quả là toàn bộ môi trường terminal sử dụng cùng một color palette.
🧰 CLI Tools
Bộ Dotfiles tích hợp sẵn nhiều công cụ CLI hiện đại để cải thiện workflow lập trình.
| Công cụ | Phím tắt / Lệnh | Tính năng |
|---|---|---|
| WezTerm | Ctrl + Shift + ... |
GPU Terminal, tab và pane |
| Atuin | Ctrl + R |
Tìm kiếm command history |
| Fzf / PSFzf | Ctrl + F |
Fuzzy Finder |
| Carapace | Tab |
Autocompletion đa shell |
| Zoxide | z <folder> |
Di chuyển thư mục nhanh |
| Eza | ls, ll |
Thay thế ls |
| Bat | cat |
Syntax highlighting |
| Neovim | nvim |
Editor với LSP, TreeSitter và NvChad |
🖥️ Cross-platform
Một trong những mục tiêu chính của hệ thống là duy trì workflow tương đồng trên nhiều hệ điều hành.
| Thành phần | Windows | Linux | macOS |
|---|---|---|---|
| PowerShell | ✅ | ✅ | ✅ |
| Bash / Zsh | WSL | ✅ | ✅ |
| WezTerm | ✅ | ✅ | ✅ |
| Neovim | ✅ | ✅ | ✅ |
| Rust CLI | ✅ | ✅ | ✅ |
| Dotfiles | ✅ | ✅ | ✅ |
| Theme Engine | ✅ | ✅ | ✅ |
Điều này giúp bạn có thể chuyển từ:
Windows → WSL → Linux → macOS
mà không cần xây dựng lại workflow từ đầu.
⚙️ Sử dụng
Khởi tạo Dotfiles
Tạo một repository Dotfiles mới:
dot init ~/my-dotfiles
Thêm configuration
Ví dụ:
dot add ~/.config/alacritty
Inject configuration
Đồng bộ Dotfiles vào hệ thống:
dot inject
Eject configuration
Gỡ symlink:
dot eject
Cập nhật CLI
Kiểm tra và cập nhật phiên bản mới:
dot update
Reload theme
Sau khi thay đổi theme:
dot theme reload
📁 Cấu trúc Dotfiles
Một cấu trúc điển hình:
dotfiles/
├── config/
│ ├── nvim/
│ ├── wezterm/
│ ├── starship/
│ └── atuin/
│
├── themes/
│ └── theme.json
│
├── scripts/
│ ├── install.sh
│ └── install.ps1
│
└── README.md
Cấu trúc này giúp configuration, theme và script được quản lý tập trung trong cùng một repository.
🔄 Workflow
Quy trình sử dụng có thể đơn giản hóa thành:
┌──────────────┐
│ Git Repo │
│ Dotfiles │
└──────┬───────┘
│
▼
┌──────────────┐
│ dot inject │
└──────┬───────┘
│
▼
┌──────────────────────────────────┐
│ Development Environment │
│ │
│ Terminal │
│ Shell │
│ Neovim │
│ WezTerm │
│ Starship │
│ Atuin │
└──────────────────────────────────┘
Khi chuyển sang một máy mới:
1. Cài hệ điều hành
↓
2. Chạy install script
↓
3. dot inject
↓
4. dot theme reload
↓
5. Bắt đầu lập trình
🛠️ Tùy biến
Bạn có thể fork repository và thay đổi configuration theo workflow của riêng mình.
Một số thứ có thể tùy biến:
- Shell configuration.
- Neovim configuration.
- WezTerm configuration.
- Starship prompt.
- Theme.
- CLI tools.
- Keybindings.
- Font.
- Package manager.
- Install scripts.
Repository:
https://github.com/kachitaro/k-dot
💡 Tại sao nên dùng Dotfiles?
Dotfiles không chỉ đơn giản là lưu lại configuration.
Nó giúp bạn:
- ♻️ Tái tạo môi trường nhanh chóng.
- 🔄 Đồng bộ configuration giữa nhiều máy.
- 🖥️ Duy trì workflow cross-platform.
- 🎨 Đồng bộ theme.
- 📦 Quản lý tool tập trung.
- 🚀 Giảm đáng kể thời gian setup máy mới.
- 📝 Lưu lại toàn bộ thay đổi bằng Git.
Thay vì:
Máy mới
↓
Cài từng tool
↓
Copy config
↓
Sửa đường dẫn
↓
Fix lỗi
↓
Chỉnh theme
↓
Fix font
↓
...
Bạn có thể:
Máy mới
↓
install
↓
dot inject
↓
Ready 🚀
💬 Lời kết
Rust CLI + Dotfiles giúp biến việc setup môi trường lập trình từ một quy trình thủ công, mất nhiều thời gian thành một workflow tự động và nhất quán.
Với Windows, Linux và macOS, bạn có thể giữ lại cùng một workflow, cùng configuration và cùng theme mà không phải thiết lập lại mọi thứ từ đầu.
Nếu dự án hữu ích với bạn, hãy ⭐ Star repository và đóng góp ý tưởng hoặc Pull Request.
Một lần setup tốt, dùng lại trên mọi máy. 🚀
All rights reserved