dotfiles入门
对于程序员来说,开发效率是非常重要的。当程序员升级自己的机器或新入职的时候,往往要做的第一件事情就是配置开发环境。毕竟工欲善其事必先利其器。而配置开发环境,无非是指如下几个方面:
- 系统配置
- 软件配置
- shell配置
- IDE配置
为什么要用dotfiles
使用dotfiles的最主要原因还是快速搭建自己的开发环境,降低迁移开发环境的成本。一些你最熟悉的配置、工具的无缝贴合,能够让你在设备升级的时候高枕无忧。
另外,学习dotfiles能够让你对工具或配置的理解更深入。brew bundle、cask等软件管理的软件,让你从linux的层面理解mac上的桌面软件的安装。同时你也会学会精简不需要的工具,比如sublime在刚开始使用的时候会狂装各类不同的工具,但是会发现很多工具的使用率其实不高。梳理dotfiles能够让你在这一点上做到断舍离。
再次,dotfiles是近距离了解和观察大牛的配置的绝佳机会。github上面有大量开源的,经验积累下来的dotfiles: https://dotfiles.github.io/ 通过学习和fork这些好的dotfiles,你能够有机会不断的丰富自己现有的dotfile,并把它调优到一种最佳的状态。
最后,还是要再强调一下效率。dotfiles给你审视自己开发环境的机会,优化并提升效率。正所谓 工欲善其事必先利其器。对于加班繁多的程序员来说,提交效率,健康生活是非常必要的。
常见的dotfiles有哪些组成部分
前面已经大致列举出了dotfiles的组成部分,我把它分为 系统配置、软件配置,shell配置,ide配置和松弛配置几个部分。下面会分别进行说明。
保存dotfiles最常见的方式就是使用github进行托管了,上文中大部分的dotfiles也都是这么做的。
- 首先新建github的目录
- 将你常用的配置放入相应的文件夹
- 建立软链
所以每当你新装机的时候,操作顺序如下:
- 从github上面拉取文件
- 使用统一的脚本安装install.sh
- 脚本包括建立软链、安装软件等一系列的动作。
- 喝杯咖啡,done
dotfiles的常用配置
系统配置
之前对mac的系统配置的了解都是在这个图标层面的。知道我发现了一个关于mac系统的配置,看了之后,惊为天人。没想到mac系统还可以让你这么玩.https://github.com/mathiasbynens/dotfiles/blob/master/.macos不过这里提醒一下,对于mac系统的专门配置,我不是特别感冒,因为跨系统鸿沟太大,同时我对这个级别的配置也并没有那么多的要求。
这里列举几个觉得还算有用的配置大家参考一下:
# 设置计算机名称
sudo scutil --set ComputerName "tedmac"
# 设置截屏保存位置
defaults write com.apple.screencapture location -string "${HOME}/Desktop"
# 设置默认的触发角
# Hot corners
# Possible values:
# 0: no-op
# 2: Mission Control
# 3: Show application windows
# 4: Desktop
# 5: Start screen saver
# 6: Disable screen saver
# 7: Dashboard
# 10: Put display to sleep
# 11: Launchpad
# 12: Notification Center
# Top left screen corner → sleep
defaults write com.apple.dock wvous-tl-corner -int 10
defaults write com.apple.dock wvous-tl-modifier -int 0
# Top right screen corner → mission control
defaults write com.apple.dock wvous-tr-corner -int 2
defaults write com.apple.dock wvous-tr-modifier -int 0
# Bottom left screen corner → lauchpad
defaults write com.apple.dock wvous-bl-corner -int 11
defaults write com.apple.dock wvous-bl-modifier -int 0
# Bottom right screen corner → desktop
defaults write com.apple.dock wvous-br-corner -int 4
defaults write com.apple.dock wvous-br-modifier -int 0
其他的配置大概看了下,没有了解的欲望,所以感兴趣的话还是去看上面的这个链接吧。
软件配置
说到软件配置,mac上的homebrew肯定是绕不开,它是基于ruby的类yum/apt-get 软件管理工具,如果你还没用过,非常建议你在这里试用一下。
![](http://ww4.sinaimg.cn/
mw690/67ad48bbjw1f7wf79n2xzj21j40pc124.jpg)
homebrew主要针对的是系统或者是终端软件,而针对桌面软件,则是另一个工具cask的天下。这里简单给一个demo,详细了解的话可以到官网。
homebrew bundle提供了类似于composer或者npm一样的包管理功能,通过这个,你就能方便的管理你mac上面安装的软件了。
比如我在set-up一台机器的时候,就会用到下面的brew bundle的配置Brewfile,来进行常用的软件管理:
# Taps,指定相应的brew的源
tap 'caskroom/cask'
tap 'caskroom/fonts'
tap 'caskroom/versions'
tap 'homebrew/bundle'
tap 'homebrew/dupes'
tap 'homebrew/php'
# Make sure apps get installed in system Applications dir
# 确保所有的app都安装在Applications目录之下
cask_args appdir: '/Applications'
# Install ZSH
# 安装 ZSH
brew 'zsh'
brew 'zsh-completions'
# Install GNU core utilities (those that come with OS X are outdated)
# 安装GNU的相关功能
brew 'coreutils'
# Install GNU `find`, `locate`, `updatedb`, and `xargs`, g-prefixed
# 安装GNX中的 `find` `locate` `updatedb` `xargs`
brew 'findutils'
# Install Bash 4
# 安装 BASH 4
brew 'bash'
# Install more recent versions of some OS X tools
# 安装OS X工具的最近版本
brew 'homebrew/dupes/grep'
# Install Binaries
# 安装一些常用的终端运行软件
brew 'awscli'
brew 'git'
brew 'hub'
brew 'tree'
brew 'mackup'
brew 'node'
brew 'trash'
brew 'wget'
brew 'svn'
brew 'httpie'
brew 'autojump'
brew 'lua'
brew 'cmake'
brew 'openssl'
brew 'ctags'
brew 'curl'
brew 'python'
brew 'python3'
# 安装开发环境
brew 'php70', args: ['with-debug', 'without-apache']
brew 'php56', args: ['with-debug', 'without-apache']
brew 'mariadb'
# cask安装桌面的软件
cask 'aerial'
cask 'flux'
cask 'alfred'
cask 'atom'
cask 'dash'
cask 'evernote'
cask 'fluid'
cask 'goofy'
cask 'google-chrome'
cask 'google-drive'
cask 'iterm2'
cask 'mysqlworkbench'
cask 'rescuetime'
cask 'screenhero'
cask 'sequel-pro'
cask 'slack'
cask 'sublime-text3'
cask 'textual'
cask 'tower'
cask 'transmit'
cask 'vagrant'
cask 'virtualbox'
cask 'virtualbox-extension-pack'
cask 'vlc'
cask 'istat-menus'
# Quicklook
cask 'qlcolorcode'
cask 'qlmarkdown'
cask 'quicklook-json'
cask 'quicklook-csv'
cask 'qlstephen'
# 常用字体
cask 'font-sauce-code-powerline'
cask 'font-source-code-pro'
cask 'font-source-sans-pro'
cask 'font-source-serif-pro'
如果有你需要的软件,只需要向里面添加,然后维护就可以了。在新的机器上,只需要brew bundle
一下,就可以快速地完成所有软件的安装了。
Introduce mackup
在完成了软件的安装,之后需要完成的就是对于软件的配置的管理了。对我来说,最需要管理的就是ide的配置了,使用的ide就是sublime3. 在这种应用场景之下,就需要针对Mackup进行配置的管理了。
Mackup主要做的就是把你在~/Library中的配置进行拷贝到同步的目录,然后通过建立软链的方式在机器之间共享。每次安装新机器的时候,只需要只需要拷贝你同步的目录,然后执行mackup restore
.
shell配置
我选用的shell是在mac厦门大名鼎鼎的zsh,它有着十分强大的特性。诸如自动填充、共享命令历史、带主题的命令行等等。
但是一开始zsh并不是特别的用户友好,所以后来出现了神器oh-my-zsh,mactalk的池老师也曾经推荐过。github地址如下:
oh-my-zsh把zsh进行了一些层面的抽象,使得使用起来更加方便一点。包括可以选取不同的命令行主题,可以配置各种不同的zsh插件,以及常用的alias和export。
# 选取一个主题
ZSH_THEME="agnoster"
# 配置powerline,这又是一个神奇的东西
. /Users/liangchen/Library/Python/2.7/lib/python/site-packages/powerline/bindings/zsh/powerline.zsh
# 配置神奇的插件
# autojump 从此找文件夹不用cd 直接一个j命令搞定,超强联想
[[ -s `brew --prefix`/etc/autojump.sh ]] && . `brew --prefix`/etc/autojump.sh
# 其他有用的插件
plugins=(git textmate ruby autojump osx mvn gradle zsh-syntax-highlighting)
# 个人专有配置
alias cls='clear'
alias ll='ls -l'
alias la='ls -a'
alias javac="javac -J-Dfile.encoding=utf8"
alias grep="grep --color=auto"
alias dotfiles="~/dev/github/dotfiles"
# 指定php文件都以sublime的方式打开,非常方便,可以支持多种不同的文件后缀和打开的方式。
alias -s c=vim
alias -s gz='tar -xzvf'
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'
alias -s php='subl'
IDE配置
现在主要在用的ide是sublime,有优点也有不少缺点。优点在于:
- 编辑的效率更高,比如支持vim模式。
- 开放的插件体系,很多人贡献了很多不错的开源插件,如果你不满意,也可以自己修改
- 很好的代码模板功能
缺点同样也很明显,但是最致命的就是对php的语法检查, 没有一个很好的插件能够做到。最基本的尽管有,但是对$符的检查和支持就没有phpstorm那么到位了。这块之后想办法再去优化一下插件吧。
针对sublime的php开发配置,可以另开一篇文章了,这里只是先列举一下我常用的sublime的插件:
- php开发专用:
- codeintel:进行php专用的代码提示,可以配置不同的php执行的版本,这里选择的是php5.5;但是一直被人诟病不稳定性;
- sublimelinter:php基本语法依赖检查
- sublimePHPCS: 代码探测和PSR2校验
- php companion: 类的自动导入,包括对命名空间的识别和导入
- Bracket hightling: 语法高亮
- Codebug:类似PHPstrom 对xdebug的集成
- php completion: 代码自动补全
- php NinJa Manuel:热心人折腾的php中文文档,挺实用的
- 实用工具:
- svn
- git
- vcs gutter: 版本控制自动识别与提示
- markdown preview
- CodeFormatter:代码美化
- prettyjson: json美化
- snippet:代码块自定义与自动生成
- evernote插件
- 心情愉悦:
- boxy theme: 2016 sublime最佳主题之一
看了这么多的配置,不知你是否也有兴趣尝试一下?快快行动起来,提高你的工作效率吧!