MacOS dotfiles inspired by holman/dotfiles and DanielThomas/oh-your-dotfiles.
omz 分支使用 oh-my-zsh 管理套件,該分支已不再維護
這份 dotfiles 包含自動安裝和 symlink 檔案,從 gitconfig、zinit、macos 以及 .config 資料夾全部都設定好了,基本上是一個開箱即用的狀態。所有設定都基於 keep it simple 觀念完成,外觀盡量遵照 vscode 預設主題,一律使用 MesloLGS NF 字體。
- 📂 集中管理:不再需要將系統安裝腳本和 dotfiles 分開管理,一次完成兩種需求
- ⚡ 快速啟動:使用 zsh-defer 和 zinit 延遲載入
- 🎨 已配置完成的 Powerlevel10k 主題
- 🔍 多個預先配置的插件
- fast-syntax-highlighting 語法上色
- zsh-autosuggestions 指令歷史建議
- zsh-completions 指令補全
- colored-man-pages 上色的 man pages
- extract 自動解壓縮
- z 快速導航
- 🌏 LANG、LC_ALL 和 Git 都已經設定好繁體中文
- 🍺 GPG、homebrew 等等常見煩人問題都已經解決
- 🖥️ 終端機
- wezterm: binwenwu/wezterm-config
- warp: warpdotdev/themes
- ✏️ 文字編輯
- neovim: 使用 Lazyvim 設定檔,關閉所有 lsp,鍵盤映射 Ctrl+d 為黑洞刪除
- helix: onedarker 主題,並且整合 ruff lsp
- 🔧 工具
- gallery-dl: 精心設計的 config.json,只需修改路徑即可使用
- yt-dlp: 設定檔為最高畫質和音質,開箱即用
和 holman 的相比:
- 更為現代,使用套件管理系統,不再需要自己維護功能
- 集中管理 symlink/installer 更為方便直觀易於維護
- $ZSH 關鍵字被改為 $ZDOTFILES 避免衝突
和 DanielThomas 的相比:
- 執行檔和設定檔不區分為兩個 repo(但是要用 git submodule)
- 簡化設定,不區分任何作業系統
實際使用過後感覺繁雜的設定只是徒增困擾,於是簡化為只有 symlink 和 installer 兩種資料夾,並且保留其餘的資料夾設定:
- bin/: 所有在 bin 資料夾的指令都會被載入並隨處可用
- fpath: 此資料夾會加入 fpath,這個路徑多用於指令補齊
- installer: 只有 macos 才會執行 installer 資料夾的所有
*.sh
檔案 - symlink/: 這裡的所有檔案都會被 symlinked 到
$HOME
以便集中管理設定檔 - zsh/*.zsh: 所有
.zsh
都會被.zshrc
載入到環境中
由於 .config 裡面可能會有隱私設定所以 .gitignore 設定 config.symlink
一律略過除非手動新增。
git clone --depth=1 --recursive --shallow-submodules https://github.com/ZhenShuo2021/dotfiles-macos.git ~/.dotfiles
cd ~/.dotfiles
./bootstrap
你應該首先修改 zsh/zshrc.symlink
以調整路徑和個人偏好設定。成功安裝後系統會增加 dot
指令可以更新所有
第一次看 shell 發現他的上下文比一般語言難追多了,所以在這裡額外解釋方便像我這樣的小白理解。
- 入口 ./bootstrap
- 如果是 MacOS 會執行 bin/dot 進行安裝
- bin/dot 會進行各項安裝和更新,使用 bootstrap 安裝完成後也可以直接使用
dot
執行 - bin/dot 會回頭呼叫 ./install
- ./install 會進行 brew bundle 安裝所有套件,並且執行所有 installer 資料夾中的 .sh 檔
- bin/dot 會進行各項安裝和更新,使用 bootstrap 安裝完成後也可以直接使用
- 接著回到 bootstrap 繼續執行 setup_gitconfig/link_files
每次開啟終端機時 .zshrc
會載入 zsh 資料夾裡面的所有 .zsh
檔以及 functions
bin
。
所有 submodule 都在 custom 分支進行修改。
- wezterm 主題預設的圖片沒有刪掉只是放到子資料夾,移出來就可以有隨機背景圖片。
這其實是一個速查表,我基本上沒改什麼東西大部分都是預設
按鍵 | 說明 |
---|---|
a /s |
在光標前/後插入 |
Ctrl+d |
黑洞刪除 |
Ctrl+o |
回到上一個位置 (等同 vscode Ctrl+-) |
Home |
仿照 vscode 的智慧 Home 鍵 |
* |
下一個文字出現位置 |
g-d |
跳到變數定義位置 |
Ctrl-o |
回到前一個位置 |
Space-e |
開啟檔案瀏覽器 |
Ctrl+H/L |
切換檔案瀏覽器聚焦位置 |
Shift+H/L |
切換檔案瀏覽器中開啟的檔案 |
Space-b-d |
光標切換檔案/檔案瀏覽器 |
h |
在檔案瀏覽器中回到上一層 |
指令 | 全名 | 用途簡介 |
---|---|---|
gc | git commit | 提交變更 |
gc! | git commit --amend --no-verify | 合併上一提交 |
gca | git commit -a | 提交追蹤檔案 |
gco | git checkout | 切換分支 |
gcb | git copy-branch-name | 複製分支名稱 |
gb | git branch | 顯示分支 |
gs | git status -sb | 簡要狀態 |
ge | git-edit-new | 編輯新檔 |
gl | git pull --prune | 拉取更新 |
glog | git log --graph ... | 顯示提交圖 |
gp | git push origin HEAD | 推送分支 |
gp! | git push origin HEAD --force-with-lease | 強制推送 |
gd | git diff --color | sed ... | 顯示差異 |
指令 | 全名 | 用途簡介 |
---|---|---|
vv | nvim | 啟動 Neovim Editor |
hnc | hugo new content | 新增 Hugo 內容文章 |
ls | ls -F | 列出檔案 |
l | ls -lAh | 詳細檢視檔案 |
ll | ls -l | 列出詳細資訊 |
la | ls -A | 顯示隱藏檔 |
reload! | . ~/.zshrc | 重新載入 Zsh |
cls | clear | 清理終端 |
.. cd.. |
cd .. | 回上一層 |
... cd... |
cd ../.. | 回兩層 |
.... cd.... |
cd ../../.. | 回三層 |
pubkey | more ~/.ssh/id_rsa.pub | pbcopy | 複製公鑰 |
d | docker $* | 執行 Docker |
d-c | docker-compose $* | 執行 Docker Compose |
太多了自己看(其實是跨檔案懶得慢慢貼給 GPT 生成),在 bin
還有 functions
都有很多 holman 設定的函式,例如 extract 根本神器,自動分辨副檔名解壓縮。
簡單介紹都裝了哪些東西,只講大件的,基本上都是開源工具
- docker/docker-compose: 容器
- iterm2/wezterm/warp/tmux: 終端機工具
- helix/neovim/Lazyvim: 文字編輯器和擴展
- fd/fzf/ripgrep: Lazyvim 推薦的搜尋工具
- git/gh/act: git/本地 github cli/actions平台
- exiftool: 相片元資料編輯器
- imagemagick: 相片編輯工具
- gallery-dl/yt-dlp/motrix: 圖片/影片/萬用下載工具
- yazi: 檔案檢視器
- hiddenbar: 狀態欄隱藏工具
- ffmpeg: 影片轉檔
- Localsend: 跨裝置類 airdrop
- upscayl: AI 超解析度工具
- Spotify
- chrome
- joplin
- google-drive
- teamviewer
- raycast
- stats
This software is forked from Holman (MIT License, https://github.com/holman) and includes code from Oh My Zsh (MIT License, © 2009-2017 Robby Russell and contributors) and Warp themes (Apache License 2.0, https://github.com/warpdotdev/themes).