查看原文
其他

还在用 Win?教你从零把 Mac 打造成开发利器

The following article is from 腾讯技术工程 Author guoweiye

转自:腾讯技术工程

本文作者:guoweiye,腾讯 PCG 开发工程师

很多人都说 Mac 比 Windows 更适合做开发,那关键是要把 Mac 配置好,下面就来和大家分享一下如何从零开始把一台新 Mackbook 打造成开发利器。


一、基本设置

  1. 升级操作系统(macOS Mojave 10.14.3)

  2. 关闭菜单栏效果, 减少资源占用和产生的热量

系统偏好设置/辅助功能/显示, 勾选 (减弱动态效果、减少透明度)

  1. 配置睡眠保护

系统偏好设置/安全性与隐私/通用, 勾选(进入睡眠或开始保护程序 立即 要求输入密码)

  1. 配置触发角

系统偏好设置/屏幕保护程序/触发角, 选择(右上桌面,左下启动台,右下启动屏幕保护)


二、工具安装

  1. Xcode Command Line Tools

xcode-select --install

  1. Homebrew

# 这里必须设置 代理地址,否则无法安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install
  1. brew cask list

  2. brew 安装常用工具


  1. brew cask 安装常用工具


  1. 其他工具

  • 下载工具 motrix

  • 截图工具 jietu

  • 看图工具 jietu

  • brew cask tools list

  • 快速查看工具 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


三、其他配置

  1. 设置 iterm2

  • iterm2 配色官网

    iterm2 > preference > profiles > colors > Color Presets > solarized dark

    2.安装 zsh,oh-my-zsh

# 安装 zsh 及 补全
brew install zsh zsh-completions

# 安装 oh-my-zsh
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

# 编辑 /etc/shells
sudo vim /etc/shells

# 添加 zsh
/usr/local/bin/zsh

# 修改默认shell
sudo chsh -s /usr/local/bin/zsh

# 将环境变量移到~/.env.sh
vim ~/.zshrc

# 设置主题
ZSH_THEME=pygmalion
# 设置插件
plugins=(git colored-man colorize github jira vagrant virtualenv pip python brew osx zsh-syntax-highlighting)

# ls 配色生效
unset LSCOLORS
export CLICOLOR=1
export 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/colors
cp colors/solarized.vim ~/.vim/colors/

# 配置 vim
vim ~/.vimrc
syntax on
set background=dark
colorscheme solarized
set backspace=2

    4. vscode 配置命令行中打开

Open the Command Palette ( ⇧⌘ P) and type 'shell command' to find the Shell Command: Install 'code' command in PATH command.

  1. 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

  1. vscode python 解释器选择

⇧⌘P, 搜索 select interpreter ,选择一个 env-3.6.8

  1. vscode python lint 安装,选择 pylint 即可

  2. vscode python 自动格式化

"python.formatting.provider": "black"

  1. python 开发工具

  • jetbrains 全家桶

  • pycharm Community

  • idea Community


四、 python 环境

  1. pyenv 安装

    # 安装 pyenv 参考, http://einverne.github.io/post/2017/04/pyenv.html
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

    # 添加环境变量
    vim ~/.zshrc
    export PATH="/.pyenv/bin:<annotation encoding="application style="font-size: inherit;line-height: 1.75;color: rgb(80, 161, 79);overflow-wrap: inherit;word-break: inherit;" 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;word-break: inherit;"><span class="strut" style="height:1em;vertical-align:-0.25em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;"><span class="mord mathit" style="margin-right:0.08125em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">H<span class="mord mathit" style="margin-right:0.02778em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">O<span class="mord mathit" style="margin-right:0.10903em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">M<span class="mord mathit" style="margin-right:0.05764em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">E/.<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">p<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">y<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">e<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">n<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">v/<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">b<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">i<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">n<span class="mspace" style="margin-right:0.2777777777777778em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">: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;word-break: inherit;"><span class="strut" style="height:1em;vertical-align:-0.25em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">(<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">p<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">y<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">e<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">n<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">v<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">i<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">n<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">i<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">t¨<span class="mord mathit" style="margin-right:0.05764em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">E45<span class="mord mathit" style="margin-right:0.05764em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">E)"<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">e<span class="mord mathit" style="margin-right:0.03588em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">v<span class="mord mathit" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">a<span class="mord mathit" style="margin-right:0.01968em;" style="font-size: inherit;color: inherit;line-height: 1.75;overflow-wrap: inherit;word-break: inherit;">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-problems
    brew 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-409320318
    CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" pyenv install 3.7.2

    # 安装 python 3.6 ,tf 支持的最新版本
    pyenv install 3.6.8

    # 安装 python2 最新版 2.7.16
    pyenv 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">
  2. 创建 pip 配置文件

    # 创建 pip 配置目录
    mkdir ~/.pip

    # 编辑配置
    vim ~/.pip/.pip.conf

    # 添加以下内容
    [list]
    format=columns
    [global]
    download_cache = ~/.cache/pip
    index-url = http://mirrors.aliyun.com/pypi/simple/
    [install]
    trusted-host=mirrors.aliyun.com


五、数据库安装

  1. 数据库安装

  2. 通过 brew service 管理此类后台任务

    brew tap homebrew/services
    brew services start mysql
    brew services restart mysql
    brew services list
    brew services cleanup

    # 通过界面管理后台服务
    brew cask install launchrocket


六、参考

  1. 主要参考

  • awesome-mac

  • open-source-mac-os-apps

  • Best-App

  • mac-setup

  • mac-dev-setup

  • dev-setup



感谢阅读

推荐阅读:

1真实的上海IT圈:张江男vs漕河泾男

2:真实的北京IT圈:后厂村姑 vs 后厂村花?

3:为什么你的提问没人解答?

4:Python爱好者社区历史文章合集(作者篇)

5:Python爱好者社区历史文章合集(类型篇)


好看请点这里~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存