如果不清楚什么是dotfiles的话,可以参阅善用dotfiles个人化自己的工作环境 :
dotfiles,顾名思义,就是档案名称以. (dot) 为prefix 的档案通称,若是您的作业系统是Mac OS X 或是Linux 这类*nix-based 的作业系统,一般来说在视窗环境中是看不到这些档案的,因为对系统来说,他们是所谓的隐藏档,这些档案有一些共通点,那就是他们通常用来储存一些个人化的设定或是自定的拓展功能,以符合使用者本身的使用需求与习惯,有了这些设定好的档案之后,使用者可以让整个系统用起来更为顺手,并且大幅提升他们自身的工作效率!因此对某些使用者来说,这些dotfiles 设定档对他们来说,反而可能是他们机器上最重要的档案呢!
这份dotfiles是fork自 Holman's dotfiles,并根据个人的需求修改过,如果有兴趣,阅读完这份文件之后,欢迎fork一份回去配置成适合自己的dotfiles。
更多的dotfiles请参考 GitHub does dotfiles。
如果你打算从干净的Mac环境开始,请参阅 OS X:如何清除并安装。
xcode- select --install
下载或使用git clone一份到 $HOME
目录底下的 .dotfiles
资料夹里面:
git clone https://github.com/amowu/dotfiles.git ~ /.dotfiles
进入 .dotfiles
资料夹:
cd ~ /.dotfiles
安装dotfiles:
script/bootstrap
bootstrap.sh
这个程式会自动完成以下工作:
.zshrc
, .vimrc
, .gitconfig
, .gitignore
, ...)。完成之后,手动安装一些App Store 上才有的软体(Dash, Moom, ...)。
使用 Mackup 进行备份回复:
mackup restore
什么是Mackup? 底下会介绍。
执行 ~/.dotfiles/script/bootstrap
的时候,脚本会将目录底下所有的 *.symlink
档案透过 ln
命令建立连结至$HOME
目录底下:
topic*.symlink.dotfiles
git gitconfig.symlink ~/.gitconfig
gitignore.symlink ~/.gitignore
mackup mackup.cfg.symlink ~/.mackup.cfg
vim vimrc.symlink ~/.vimrc
zsh zshrc.symlink ~/.zshrc
每一个环境的配置是以资料夹的形式被独立区分。例如,如果想要新增"Java"的配置到dotfiles,你可以简单的新增一个命名为 java
的资料夹,然后将档案建至目录底下。任何副档名是 .zsh
的档案将在shell执行时被自动载入至环境中。任何副档名是 .symlink
的档案将在你执行 script/bootstrap
安装时被连结至 $HOME
目录底下。.
一些目录中比较特别的档案:
bin/
目录底下的档案可以在shell执行时直接使用。.zsh
结尾的档案都会在shell执行时被载入至环境。path.zsh
的档案会在shell执行时优先被载入至 $PATH
。*.symlink
结尾的档案都会在 $HOME
目录底下建立连结。这可以让你在配置环境的时候也保持版本控制的优点。新增symlink的时候需要执行 script/bootstrap
安装。不同于 Holman's dotfiles,我修改了一些部分:
bin/dot
是一支简单的脚本,会在 script/bootstrap
配置完dotfiles之后执行,安装自定的OS X程式并设定系统参数配置。
执行 dot
之后,它会跑以下两支脚本档:
$HOME/.dotfiles/homebrew/install.sh
- Homebrew packages$HOME/.dotfiles/osx/set-defaults.sh
- OS X defaults setting执行 homebrew/install.sh
的时候,脚本会使用 Homebrew 和 Homebrew Cask 来安装 binary、font 还有 app,可以根据个人需求修改这个档案,增加或减少自己需要的packages:
binaries=(
git
tree
...
)
字型都是以 font-XXX 的形式命名,可以用 brew cask search /font-XXX/
搜寻是否存在。
fonts=(
font-roboto
...
)
应用程式可以用 brew cask search XXX
或是 Cask Search 网站搜寻是否存在。
apps=(
dropbox
google-chrome
...
)
以下是目前安装的packages:
Binary
grc log 上色
mackup 同步应用程式的配置
tree 树状目录显示
Font
font-roboto Roboto
App
alfred 三大神器之一
dropbox 云端硬碟
google-chrome Google 浏览器
iterm2 加强版终端机
mou Markdown 编辑器
qlcolorcode 让Quick Look 支援syntax highlighting
qlmarkdown 让Quick Look 支援Markdown
qlstephen 让Quick Look 支援无副档名的纯文字档
sourcetree Git GUI
sublime-text3 程式码编辑器
执行 osx/set-defaults.sh
之后,程式会将Mac OS X的一些系统设置改变,可以根据个人需求修改这个档案,或是参考 Mathias's dotfiles 整理好的配置。
以下是目前设定的配置:
setting
加快视窗resize 的速度(Cocoa applications) defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
预设展开储存视窗 defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true
关闭“你确定要开启这个应用程式?”询问视窗 defaults write com.apple.LaunchServices LSQuarantine -bool false
开启触控板轻触点击功能 defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
开启触控板两指轻触弹出右键选单功能 defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true
开启触控板三指拖曳功能 defaults -currentHost write NSGlobalDomain com.apple.trackpad.threeFingerDragGesture -bool true
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerDrag -bool true
开启触控板四指向下滑出现app expose 功能 defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerVertSwipeGesture -int 0
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerVertSwipeGesture -int 0
defaults write com.apple.dock showAppExposeGestureEnabled -int 1
加快触控板/滑鼠的速度 defaults write NSGlobalDomain com.apple.trackpad.scaling -int 3
defaults write NSGlobalDomain com.apple.mouse.scaling -int 3
开启所有视窗组件支援键盘控制 defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
关闭键盘按住的输入限制 defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
加快键盘输入 defaults write NSGlobalDomain KeyRepeat -int 0
预设Finder 起始位置为桌面 defaults write com.apple.finder NewWindowTarget -string "PfDe"
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Desktop/"
显示副档名 defaults write NSGlobalDomain AppleShowAllExtensions -bool true
显示Finder 状态列 defaults write com.apple.finder ShowStatusBar -bool true
显示Finder 路径列 defaults write com.apple.finder ShowPathbar -bool true
允许框选Finde Quick Look 的文字 defaults write com.apple.finder QLEnableTextSelection -bool true
Finder 标题列显示完整路径 defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
预设搜寻列的结果为当前目录下 defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
关闭改变副档名的警告提示 defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
开启资料夹的spring loading 功能 defaults write NSGlobalDomain com.apple.springing.enabled -bool true
开启Dock 的spring loading 功能 defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true
移除spring loading 的延迟 defaults write NSGlobalDomain com.apple.springing.delay -float 0
避免在network volumes 底下建立.DS_Store 档案 defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
使用column view 作为Finder 预设显示选项 defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
关闭清空垃圾桶的警告提示 defaults write com.apple.finder WarnOnEmptyTrash -bool false
使用黑色的选单列和Dock defaults write NSGlobalDomain AppleInterfaceStyle Dark
使用缩放的效果作为视窗放大缩小效果 defaults write com.apple.dock mineffect -string "scale"
应用程式缩小至自己的图示 defaults write com.apple.dock minimize-to-application -bool true
显示Dock 应用程式开启中的小亮灯提示 defaults write com.apple.dock show-process-indicators -bool true
关闭Dock 开启应用程式的弹跳动画 defaults write com.apple.dock launchanim -bool false
加快Mission Control 的动画速度 defaults write com.apple.dock expose-animation-duration -float 0.1
关闭Mission Control 的应用程式群组化显示 defaults write com.apple.dock expose-group-by-app -bool false
关闭Dashboard defaults write com.apple.dashboard mcx-disabled -bool true
将Dashboard 从多重桌面之中移除 defaults write com.apple.dock dashboard-in-overlay -bool true
自动隐藏Dock defaults write com.apple.dock autohide -bool true
移除隐藏Dock 的延迟 defaults write com.apple.dock autohide-delay -float 0
移除Dock 的显示/隐藏动画 defaults write com.apple.dock autohide-time-modifier -float 0
将隐藏的应用程式Dock 图示半透明显示 defaults write com.apple.dock showhidden -bool true
以上,若修改过 homebrew/install.sh
或 osx/set-defaults.sh
之后,直接执行指令:
dot
就会再次更新packages 还有defaults setting。
当初始环境都安装好之后,剩下的就是恢复备份。除了 .zsrc
、.vimrc
这类dotfile比较适合放在版本控制之外,其他像是Sublime的plugin、iTerm2的setting、Oh My Zsh的plugin、等等很多还有一般应用程式的配置档需要备份,甚至是SSH的key,这些我认为都不适合丢进dotfiles放上GitHub。所以这里介绍 Mackup 这个简单的工具作为解决方案,使用方式很简单,brew install mackup
安装完之后只要执行:
mackup backup
就可以将档案备份到Dropbox 或Google Drive。当需要恢复的时候则是执行:
mackup restore
就会将云端硬碟上的备份以 ln
连结的方式在新电脑上同步。
配置方式也很容易,建立一份 ~/.mackup.cfg
,或是直接使用 .dofiles/mackup/mackup.cfg.symlink
来修改:
[storage]
engine = dropbox #同步的云端硬碟,有dropbox与google_drive可以选择
directory = Mackup #同步的资料夹,这里会将所有备份同步至~/Dropbox/Mackup底下
# 指定要同步的应用程式
[applications_to_sync]
iterm2
oh-my-zsh
sublime-text-3
ssh
[applications_to_ignore]
# 指定不想同步的应用程式
以下是目前备份的应用程式:
app
iterm2 加强版终端机
moom 视窗布局
oh-my-zsh 加强版ZSH
sourcetree Git GUI
sublime-text-3 程式码编辑器
ssh SSH Key
更多详细的配置与支援的软体请参阅 mackup的文件。