如何優雅地使用 macOS

當時寫這篇文章的時候才接觸 mac 沒多久,使用快兩年之後,再次修訂了本文。

本文在於如何優雅的使用 macOS , 而不是 macOS 逼格高不高,Win 和 Mac 孰優孰劣。


應評論區要求,補充職業信息和電腦使用經驗,工具當與需求緊密掛鉤,本人 Pythonist, 專註於 Web 開發,後端主 Django, 前端主 VueJS , 本吊子全乾工程師。5年折騰Win經驗 , 1年折騰Ubuntu經驗 , 兩年macOS折騰經驗。

0x00 前言

談及 macOS , 很多人喜歡和 Win 比個高下。在我看來, Win 雖在非編程類生態和易用性比 Mac 要好很多,可專業人士之所以專業是因為他能挑選適合的武器發揮最大的效用,不是嗎?

適合自己的,能讓自己用最大效率生產或者是娛樂的,才是更好的工具。

Win 的優點如下:

  • 優良的兼容性。
  • 由於出自於什麼都愛做的微軟公司,從整體來說,VS,.NET, 遊戲性,兼容性,性能,新手上手速度來說,都是遙遙領先 Mac 的。

Win 的缺點如下:

  • 微軟的戰線實在是拉的太長,什麼都想做,什麼都想壟斷。於是,與之服務密切相關的公司也就受到了 MS 的牽制。這對大公司來說,幾乎是不能夠忍受的行為。
  • 糟糕的終端環境(DOS)和無法與、*nux 世界的腳本友好相處使得系統的可定製性和進階操作性大大降低。
  • 雖然有 Everything,TotalCMD,AHK 這種神級輔助工具可以滿足定製要求。但由於過高的學習成本(哈哈哈,混亂也是學習成本之一,AHK 語言真的很混亂啊,TC 實在是太不人性化了)。
  • Python 的環境配置實在是太頭疼了

Win 的缺點就是我切到 Mac 上面的原因。

macOS 的優點如下:

  • Mac 的好在於終端和美觀的圖形的結合。適合不是微軟技術棧和重度 Office 的用戶。
  • *nux 應用的方便以及非常容易與腳本文件配合出強大的組合技能。
  • 反觀 Win 上,則這種組合技能則在環境配置上和操作流暢度上差了很多。

macOS 的缺點如下:

  • 娛樂項目實在是少的要死。Metal 和 DirectX 相差不是一點點。
  • 軟體和有些少的不只一點點。

本文從下面幾處入手,分別從下面幾個角度介紹了 macOS

▼ 如何優雅地使用 macOS 0x00 前言▼ 0x01 系統內置 1.1 系統設置 1.2 自帶軟體 1.3 快捷鍵與觸摸板▼ 0x02 必備軟體 2.1 必備軟體 之 日常必備 ▼ 2.2 必備軟體 之 開發必備 2.2.1 GUI 應用 2.2.2 CMD 命令 ▼ 2.3 必備軟體 之 編程語言 2.3.1 Shell 2.3.2 Python▼ 0x03 踩坑史 ▼ 3.1 日常類 01. 時間機器無法完成備份 02. 下載站的軟體包顯示損壞 ▼ 3.2 編程類 01. homebrew 的與 Python 的問題 0xEE 參考鏈接

0x01 系統內置

1.1 系統設置

General

  • 默認瀏覽器 : Google Chrome

Decktop & Screen Saver

  • 桌面 / 屏保

Language & Region

  • 語言
  • 地區設置

Security & Privacy

  • 防火牆

Sharing

  • Remote Control - SSH

Trackpad

  • 設置手勢
  • 滾輪 Scrool Direction : Natural

1.2 自帶軟體

  • iTunes
  • iPhoto
  • iMessage
  • SpotLight -> Alfred 3

1.3 快捷鍵與觸摸板

  • cmd 為 command 按鍵,通常情況下為所有桌面程序通用性的快捷鍵。
  • ctrl ,通常情況下是針對程序的功能進行加強,並且此功能往往是非 cmd 類(窗口操作,選擇,複製粘貼等等)操作。
  • shift 按鍵通常用於加強操作。一般會讓操作更進一步 or 相反操作。
  • cmd+tab =~ alt+tab 程序之間的切換
  • cmd+` 應用內窗口切換
  • cmd+h 窗口 hide
  • cmd+m 窗口 minimize
  • cmd+n 新建窗口
  • cmd+o 打開
  • cmd+s 保存
  • cmd+shift+s 另存為
  • cmd+p 列印 print
  • cmd+w 關閉
  • cmd+q quit
  • cmd+a select all
  • cmd+i show info
  • cmd+n create a new folder
  • cmd+f search
  • cmd+c copy
  • cmd+v paste
  • cmd+delete 刪除選中文件
  • cmd+shift+delete 清空回收站
  • cmd+= 放大
  • cmd+- 縮小
  • cmd+t 新建選項卡
  • cmd+r 刷新
  • cmd+shift+3 截取整個屏幕
  • cmd+shift+4 截取選擇區域
  • cmd+shift+4+SPACE 截取選擇窗口
  • cmd+ 滑鼠點擊 -> 選中不連續文件
  • control+ 滑鼠點擊 -> 相當於 win 中右鍵點擊
  • fn+left home
  • fn+right end
  • fn+up pageup
  • fn+down pagedown

觸摸板手勢:

  • 點擊
    • 單指點擊 - 單擊
    • 單指滑動 - 滑動滑鼠游標
    • 雙指點擊 - 相當於 Windows 的滑鼠右鍵
    • 三指點擊 - 劃詞查找
  • 滑動與縮放
    • 雙指上下滑動 - 滾動
    • 雙指縮放 - 與 Android 上圖片縮放一致
    • 雙指雙擊 - 只能縮放
    • 雙指旋轉 - 旋轉
    • 雙指左右滑動 - 應用內切換網頁
    • 雙指頭從右往左
    • 三指頭左右滑動 - 全屏幕 App 切換
    • 三指拖動 - 扔掉滑鼠必備 (謝評論區提醒)
    • 大拇指和食中無名縮放 - launchpad

0x02 必備軟體

2.1 必備軟體 之 日常必備

  • 啟動器
    • Alfred 3
    • SpotLight
  • 網路工具
    • Chrome
  • 社交通訊
    • QQ
    • WeXin
  • 圖形圖像
    • Adobe PhotoShop CC
    • Adobe PhotoShop LightRoom
    • Sketch
    • Annotate
    • Camtasia 2
    • Snagit
    • ScreenFlow
    • Final Cut Pro
    • MPlayerX
    • QuickTime
    • iQiyi
    • NeteaseMusic
    • IINA
  • 辦公軟體
    • 歐陸詞典
    • Calibre
    • Wiznote
    • PDF Reader
    • iBook
    • Microsoft Office
    • Work 套件:包括 pages, numbers, keynote
    • XMind
    • Airmail
    • TeamViewer
    • OmniFocus
    • OmniGraffle
    • OmniOutline
    • OmniPlan
  • 系統軟體
    • 搜狗輸入法
    • AppCleaner
    • CleanMyMac
    • VMWare
    • BetterZip
    • Caffeine / Amphetamine
    • PopClip
    • HandShaker
    • AirDroid

2.2 必備軟體 之 開發必備

2.2.1 GUI 應用

  • 終端用戶
    • iTerm2
  • IDE
    • PyCharm
    • IntellijIDEA
    • WebStorm
  • 編輯器
    • MacVim 配合 C-VIM
    • Sublime Text 3
  • 後台組件
    • MySQL
    • PostgreSQL
    • Redis
    • MongoDB
  • 資料庫管理軟體
    • Navicat
    • Datagrip
    • RoboMongo
    • RDM
    • Dash
  • 網路工具
    • SS QT
    • Charles, Wireshark
  • Chrome
    • Exporter : 百度雲,需要離線安裝
    • AdBlock : 廣告攔截
    • AutoPatchWork : 鏈接下一頁
    • Axure RP Extension : Axure
    • CSSViewer
    • Dream Afar New Tab
    • JSON Editor
    • JSON View
    • Octotree
    • One-Click Extensions Manager
    • Proxy SwitchyOmega
    • React Developer Tools
    • Redux DevTools
    • Vue.js devtools
    • Vimium
  • 代碼倉庫
    • Github Desktop
    • SourceTree
  • GIS 相關
    • ArcGIS
    • QGIS
    • PostgreSQL + PostGIS

2.2.2 CMD 命令

if test ! $(which brew); then echo "Installing homebrew..." ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"fi# Make sure we』re using the latest Homebrew.brew update# Upgrade any already-installed formulae.brew upgrade --all# Install GNU core utilities (those that come with OS X are outdated).# Don』t forget to add `$(brew --prefix coreutils)/libexec/gnubin` to `$PATH`.brew install coreutilssudo ln -s /usr/local/bin/gsha256sum /usr/local/bin/sha256sum# Install some other useful utilities like `sponge`.brew install moreutils# Install GNU `find`, `locate`, `updatedb`, and `xargs`, `g`-prefixed.brew install findutils# Install GNU `sed`, overwriting the built-in `sed`.brew install gnu-sed --with-default-names# Install Bash 4.brew install bashbrew tap homebrew/versionsbrew install bash-completion2# We installed the new shell, now we have to activate itecho "Adding the newly installed shell to the list of allowed shells"# Prompts for passwordsudo bash -c "echo /usr/local/bin/bash >> /etc/shells"# Change to the new shell, prompts for passwordchsh -s /usr/local/bin/bash# Install `wget` with IRI support.brew install wget --with-iri# Install RingoJS and Narwhal.# Note that the order in which these are installed is important;# see http://git.io/brew-narwhal-ringo.brew install ringojsbrew install narwhal# Install Pythonbrew install pythonbrew install python3# Install ruby-build and rbenvbrew install ruby-buildbrew install rbenvLINE="eval "$(rbenv init -)""grep -q "$LINE" ~/.extra || echo "$LINE" >> ~/.extra# Install more recent versions of some OS X tools.brew install vim --override-system-vibrew install homebrew/dupes/grepbrew install homebrew/dupes/opensshbrew install homebrew/dupes/screenbrew install homebrew/php/php55 --with-gmp# Install font tools.brew tap bramstein/webfonttoolsbrew install sfnt2woffbrew install sfnt2woff-zopflibrew install woff2# Install some CTF tools; see https://github.com/ctfs/write-ups.brew install aircrack-ngbrew install bfgbrew install binutilsbrew install binwalkbrew install ciferbrew install dex2jarbrew install dns2tcpbrew install fcrackzipbrew install foremostbrew install hashpumpbrew install hydrabrew install johnbrew install knockbrew install netpbmbrew install nmapbrew install pngcheckbrew install socatbrew install sqlmapbrew install tcpflowbrew install tcpreplaybrew install tcptracebrew install ucspi-tcp # `tcpserver` etc.brew install homebrew/x11/xpdfbrew install xz# Install other useful binaries.brew install ackbrew install dark-mode#brew install exiv2brew install gitbrew install git-lfsbrew install git-flowbrew install git-extrasbrew install hubbrew install imagemagick --with-webpbrew install luabrew install lynxbrew install p7zipbrew install pigzbrew install pvbrew install renamebrew install rhinobrew install speedtest_clibrew install ssh-copy-idbrew install treebrew install webkit2pngbrew install zopflibrew install pkg-config libffibrew install pandoc# Lxml and Libxsltbrew install libxml2brew install libxsltbrew link libxml2 --forcebrew link libxslt --force# Install Caskbrew install caskroom/cask/brew-caskbrew tap caskroom/versions# aerial 屏保# https://github.com/JohnCoates/Aerialbrew cask install aerial# https://github.com/sindresorhus/quick-look-pluginsbrew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlprettypatch quicklook-csv betterzipql qlimagesize webpquicklook suspicious-package quicklookase qlvideobrew update && brew upgrade --all && brew cleanup && brew prune

2.3 必備軟體 之 編程語言

2.3.1 Shell

MAC 使用的大多命令行工具來自於 FreeBSD , 並不是來自 GNU , 所以很多命令會與常規的 linux 命令大同小異。

而本人喜歡 GNU 系軟體。

Shell 腳本可參考我的筆記。 第九節如何優雅的使用 Shell_

2.3.2 Python

筆者雖然也接觸過很多語言,都是粗淺一過,但無一精通,唯一可以稍微談談的就是 Python 語言。

當然,安裝完畢自然是可以參考一下我的 第三節 Pythonista 的工具集_

git clone https://github.com/yyuu/pyenv.git ~/.pyenvgit clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenvecho "export PYENV_ROOT="$HOME/.pyenv"" >> ~/.zshrcecho "export PATH="$PYENV_ROOT/bin:$PATH"" >> ~/.zshrcecho "eval "$(pyenv init -)"" >> ~/.zshrcecho "eval "$(pyenv virtualenv-init -)"" >> ~/.zshrc# 接著另開終端# 不喜寫兼容代碼,所有代碼均向 3.5+ 靠攏v=3.5.2|wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $vv=3.6.0|wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $vv=2.7.11|wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v# 可以先用迅雷把 官網的 Anaconda3-4.4.0-MacOSX-x86_64.sh 下載下來,然後mv Anaconda3-4.4.0-MacOSX-x86_64.sh ~/.pyenv/cache/ && pyenv install anaconda3-4.4.0# 設置 Global Python 為 2.7.11, 備註:盡量不要把 Py3 設置為全局,否則由於 Homebrew 本身有一些依賴是依賴於 Py2 的,這樣容易出現一些奇怪的問題。pyenv global 2.7.11pip install -i https://pypi.doubanio.com/simple requests# 下面這個是用於安裝基本的代碼補全功能pip install -i https://pypi.doubanio.com/simple --upgrade "jedi>=0.9.0" "json-rpc>=1.8.1" "service_factory>=0.1.5" flake8 pytest autoflake hy# 創建最常用 Py3 虛擬環境pyenv virtualenv 3.5.2 py3-dailypyenv activate py3-dailypip install -i https://pypi.doubanio.com/simple requestspip install -i https://pypi.doubanio.com/simple beatutifulsoup4pip install -i https://pypi.doubanio.com/simple ipython[notebook]pip install -i https://pypi.doubanio.com/simple jupyter# 下面這個是用於安裝基本的代碼補全功能pip install -i https://pypi.doubanio.com/simple --upgrade "jedi>=0.9.0" "json-rpc>=1.8.1" "service_factory>=0.1.5" flake8 pytest autoflake hy# 創建 Anaconda 的數據科學 AI 環境pyenv virtualenv anaconda3-4.4.0 py3-aipyenv activate anaconda3-4.4.0/envs/py3-aipyenv deactivate

0x03 踩坑史

3.1 日常類

01. 時間機器無法完成備份

我有定期備份的習慣,在一次備份中,意外的發現怎麼備份都無法備份完畢,經過幾次測試:

  1. 我首先猜測是硬碟問題,換了一塊硬碟,問題依舊。
  2. 複製了幾個大文件,感覺也不太像是介面接觸不良的問題。
  3. 我認為可能是文件數量過多導致的問題。於是刪除掉 node_module 後再次備份,備份成功。當然,這也有一定概率是誤打誤撞。畢竟從概率學上講,壞掉的鐘還能一天有兩次時間是對的呢。

02. 下載站的軟體包顯示損壞

有的時候並不是軟體損壞,而是 macOS 的安全配置中配置關掉了未識別出的 App

在終端中開啟這個選項,並在安全與隱私處點上 anywhere 即可。

sudo spctl --master-disable

3.2 編程類

01. homebrew 的與 Python 的問題

在 Python 中執行下面的代碼的時候總是報錯:

ip = socket.gethostbyname(socket.gethostname())# socket.gaierror: [Errno 8] nodename nor servname provided, or not known# 最後發現是因為設置主機名沒有設置好sudo scutil --set ComputerName "newname"sudo scutil --set LocalHostName "newname"sudo scutil --set HostName "newname"dscacheutil -flushcache# 然後重啟電腦即可

如果本機安裝了 Homebrew 如果後面使用 PyEnv 或者 Anaconda 並且設置當前環境為默認 Python 為 Python3(不建議這麼搞), 但是如果偏偏要把默認的 Python 版本換成 Python3, 會彈出一些 pythonpath 的問題,執行下面命令即可暫時屏蔽這個問題,但是沒有隱患則不清楚。

mv /usr/local/lib/python2.7/site-packages/sitecustomize.py /usr/local/lib/python2.7/site-packages/sitecustomize.py.back

0xEE 參考鏈接

  • 本文部分命令行安裝借鑒了 dev-setup
  • 我的知乎回答: 如何優雅地使用 Windows 10 ?
  • 我的知乎回答:用Ubuntu做日常開發電腦的系統是一種怎樣的體驗?
  • macOS High Sierra 正式版的實際體驗怎麼樣?

ChangeLog:

  • 2016-02 確定大致內容
  • 2017-06-28 重修文字,調整文章結構,Python 環境 和 Homebrew 安裝環境
  • 2017-10-05 再次重修文字,不定期更新
  • 2017-10-06 應評論區要求,補充職業信息,刪去5%的佔有率

推薦閱讀:

Flask 實現小說網站 (二)
Python實現3D建模工具
Flask模板引擎:Jinja2語法介紹
OpenCV:圖片操作基本知識(二)
數據分析入門必看案例:泰坦尼克號倖存率研究

TAG:Mac | Python | 程序员 |