本文作者:guoweiye,腾讯 PCG 开发工程师
很多人都说 Mac 比 Windows 更适合做开发,那关键是要把 Mac 配置好,下面就来和大家分享一下如何从零开始把一台新 Mackbook 打造成开发利器。
一、基本设置
-
升级操作系统(macOS Mojave 10.14.3)
-
关闭菜单栏效果, 减少资源占用和产生的热量
系统偏好设置/辅助功能/显示, 勾选 (减弱动态效果、减少透明度)
-
配置睡眠保护
系统偏好设置/安全性与隐私/通用, 勾选(进入睡眠或开始保护程序
立即要求输入密码)
-
配置触发角
系统偏好设置/屏幕保护程序/触发角, 选择(右上桌面,左下启动台,右下启动屏幕保护)
二、工具安装
-
Xcode Command Line Tools
xcode-select --install
# 这里必须设置 代理地址,否则无法安装brew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install
-
brew 安装常用工具
-
brew cask 安装常用工具
-
其他工具
-
快速查看工具 Nicer plugins for QuickLook
brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlimagesize webpquicklook suspicious-package quicklookase qlvideo
-
微软的字体 Consolas
wget -qO- https://raw.githubusercontent.com/yakumioto/YaHei-Consolas-Hybrid-1.12/master/install.sh && sudo install.sh -
szrz插件
-
graphviz 所用语言 dot 验证
dot -h
三、其他配置
-
设置 iterm2
-
iterm2 > preference > profiles > colors > Color Presets > solarized dark
2.安装 zsh,oh-my-zsh
# 安装 zsh 及 补全brew install zsh zsh-completions# 安装 oh-my-zshcurl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh# 编辑 /etc/shellssudo vim /etc/shells# 添加 zsh/usr/local/bin/zsh# 修改默认shellsudo chsh -s /usr/local/bin/zsh# 将环境变量移到~/.env.shvim ~/.zshrc# 设置主题ZSH_THEME=pygmalion# 设置插件plugins=(git colored-man colorize github jira vagrant virtualenv pip python brew osx zsh-syntax-highlighting)# ls 配色生效unset LSCOLORSexport CLICOLOR=1export CLICOLOR_FORCE=1# 生效source ~/.env.sh
3. solarized 主题配色
# clone 之git clone https://github.com/altercation/solarized# 配置 vim 主题cd solarized/vim-colors-solarized/mkdir -p ~/.vim/colorscp colors/solarized.vim ~/.vim/colors/# 配置 vimvim ~/.vimrcsyntax onset background=darkcolorscheme solarizedset backspace=2
Open the Command Palette ( ⇧⌘ P) and type 'shell command' to find the Shell Command: Install 'code' command in PATH command.
-
vscode 插件安装
-
Chinese language pack(中文语言包)
-
markdownlint(markdown格式检查器)
-
atom one dark theme(ATOM 风格主题)
-
one dark pro(主题)
-
material theme(主题)
-
vscode-icons(图标)
-
python(vscode python扩展包)
-
go(go 扩展包)
6. vscode shell 选择,zsh
首选项/设置, 搜索 terminal.integrated.shell.osx ,设置值为 /usr/local/bin/zsh
-
vscode python 解释器选择
⇧⌘P, 搜索 select interpreter ,选择一个 env-3.6.8
-
vscode python lint 安装,选择 pylint 即可
"python.formatting.provider": "black"
-
python 开发工具
四、 python 环境
-
pyenv 安装
# 安装 pyenv 参考, http://einverne.github.io/post/2017/04/pyenv.htmlcurl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash# 添加环境变量vim ~/.zshrcexport PATH="/.pyenv/bin:<annotation encoding="application style="font-size: inherit;line-height: 1.75;color: rgb(80, 161, 79);overflow-wrap: inherit !important;word-break: inherit !important;" span="" class="hljs-string" encoding=""application"><span class="katex-html" aria-hidden="true" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;"><span class="strut" style="height:1em;vertical-align:-0.25em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;"><span class="mord mathit" style="margin-right:0.08125em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">H<span class="mord mathit" style="margin-right:0.02778em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">O<span class="mord mathit" style="margin-right:0.10903em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">M<span class="mord mathit" style="margin-right:0.05764em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">E/.<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">p<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">y<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">e<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">n<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">v/<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">b<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">i<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">n<span class="mspace" style="margin-right:0.2777777777777778em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">:PATH"eval "¨E45E)"eval"(pyenv init -)"eval "</span class="mspace" style="margin-right:0.2777777777777778em;"></span class="mord mathit"></span class="mord mathit"></span class="mord mathit"></span class="mord mathit" style="margin-right:0.03588em;"></span class="mord mathit"></span class="mord mathit"></span class="mord mathit" style="margin-right:0.03588em;"></span class="mord mathit"></span class="mord mathit" style="margin-right:0.05764em;"></span class="mord mathit" style="margin-right:0.10903em;"></span class="mord mathit" style="margin-right:0.02778em;"></span class="mord mathit" style="margin-right:0.08125em;"></span class="strut" style="height:1em;vertical-align:-0.25em;"></span class="katex-html" aria-hidden="true"></annotation encoding="application><span class="katex-html" aria-hidden="true" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;"><span class="strut" style="height:1em;vertical-align:-0.25em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">(<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">p<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">y<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">e<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">n<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">v<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">i<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">n<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">i<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">t¨<span class="mord mathit" style="margin-right:0.05764em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">E45<span class="mord mathit" style="margin-right:0.05764em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">E)"<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">e<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">v<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">a<span class="mord mathit" style="margin-right:0.01968em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit !important;word-break: inherit !important;">l"(pyenv virtualenv-init -)"# 常用命令# 查看可用版本pyenv install -l# 安装 python2 最新版本pyenv install 2.7.16# 安装报错 ERROR: The Python zlib extension was not compiled. Missing the zlib? https://github.com/pyenv/pyenv/wiki/common-build-problemsbrew install readline xz# When running Mojave or higher (10.14+) you will also need to install the additional SDK headers by downloading them from Apple Developers. You can also check under /Library/Developer/CommandLineTools/Packages/ as some versions of Mac OS will have the pkg locally.sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /# 安装 python3 最新版本 3.7.2# 报错 ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?# https://github.com/pyenv/pyenv/issues/1184#issuecomment-409320318CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" pyenv install 3.7.2# 安装 python 3.6 ,tf 支持的最新版本pyenv install 3.6.8# 安装 python2 最新版 2.7.16pyenv install 2.7.16# 创建虚拟环境pyenv virtualenv 3.6.4 env-3.6.4# 激活虚拟环境pyenv activate env-3.6.4# 退出虚拟环境pyenv deactivate</span class="mord mathit" style="margin-right:0.01968em;"></span class="mord mathit"></span class="mord mathit" style="margin-right:0.03588em;"></span class="mord mathit"></span class="mord mathit" style="margin-right:0.05764em;"></span class="mord mathit" style="margin-right:0.05764em;"></span class="mord mathit"></span class="mord mathit"></span class="mord mathit"></span class="mord mathit"></span class="mord mathit" style="margin-right:0.03588em;"></span class="mord mathit"></span class="mord mathit"></span class="mord mathit" style="margin-right:0.03588em;"></span class="mord mathit"></span class="strut" style="height:1em;vertical-align:-0.25em;"></span class="katex-html" aria-hidden="true"> -
创建 pip 配置文件
# 创建 pip 配置目录mkdir ~/.pip# 编辑配置vim ~/.pip/.pip.conf# 添加以下内容[list]format=columns[global]download_cache = ~/.cache/pipindex-url = http://mirrors.aliyun.com/pypi/simple/[install]trusted-host=mirrors.aliyun.com
五、数据库安装
-
数据库安装
-
通过 brew service 管理此类后台任务
brew tap homebrew/servicesbrew services start mysqlbrew services restart mysqlbrew services listbrew services cleanup# 通过界面管理后台服务brew cask install launchrocket
六、参考
-
主要参考