Mac 開箱食譜

Richie發表於2017-01-11

使用 mac 差不多有4、5年了,期間各種不適應到現在感覺脫離不了了。

mac 上有許多蠻有意思的軟體,付費的免費的都有,如果你願意折騰,還可以嘗試開源專案。

對於第一次接觸 mac 的人可能會遇到各種問題想放棄,甚至會產生恐懼:怎麼安裝軟體?pkg、dmg是什麼?怎麼關閉程式?等等。其實這些都不是問題,只要你安心的接納它,你會發現很美好。so easy ~

Mac Keyboard Shortcuts

幾個常用的功能鍵

  • Command 鍵 ⌘

  • Shift 鍵 ⇧

  • Option 鍵 ⌥

  • Control 鍵 ⌃

  • Caps Lock 鍵 ⇪

  • Fn 鍵

快捷鍵 說明
Command-X 剪下:移除所選專案,然後拷貝到剪貼簿。
Command-C 將所選專案拷貝到剪貼簿。這也可以用在 Finder 的檔案上。
Command-V 將剪貼簿的內容貼上目前的檔案或 app 中。這也可以用在 Finder 的檔案上。
Command-Z 還原前一個指令。您可以按 Command-Shift-Z 以重做,反轉還原指令。在某些 app 中,您可以還原與重做多個指令。
Command-A 全選專案。
Command-F 尋找:開啟 Find 視窗或在檔案中尋找專案。

System Preferences

觸控板

  1. 游標與點按

    • 輕點來點按
      用單指輕點來進行點按

    • 輔助點按
      用雙指點按或輕點來進行等同按住 Control 鍵並點按或右鍵點按的操作。

  2. 滾動縮放

    • 滾動方向:自然
      雙指上下滑動來滾動。

    • 放大或縮小
      雙指開合可放大或縮小。

    • 智慧縮放
      用雙指輕點兩下可放大網頁或 PDF,或縮小回原來的大小。

    • 旋轉
      雙指互相以對方為中心移動,即可旋轉照片或其他專案。

  3. 更多手勢

    • 三指拖移
      用三根手指拖移螢幕上的專案,然後點按或輕點以放下。可在“輔助功能”偏好設定中開啟此功能

    • 查詢和資料檢測器
      用三根手指輕點可查詢字詞,或者進行其他與日期、地址、電話號碼和其他資料相關的操作。

    • 顯示桌面
      將拇指和另外三根手指同時展開,即可顯示桌面。

    • Launchpad
      將大拇指和另外三根手指合攏到一起,即可顯示 Launchpad。

    • Mission Control
      用四根手指向上輕掃3,即可開啟 Mission Control。

    • App Exposé
      用四根手指向下輕掃3,即可檢視正在使用的應用的所有視窗。

    • 在全屏應用之間輕掃
      用四根手指向左或向右輕掃,即可在桌面與全屏應用之間移動。

Homebrew

包管理工具可以讓你安裝和更新程式變得更方便,目前在 OS X 系統中最受歡迎的包管理工具是 Homebrew.

Install

在安裝 Homebrew 之前,需要將 Xcode Command Line Tools 安裝完成。

在終端輸入:

xcode-select --install

xcode command tools 安裝完之後,接著再輸入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

耐心等待一段時間,等 homobrew 安裝好之後,再執行這一條語句:

echo `export PATH="/usr/local/bin:$PATH"` >> ~/.bash_profile

後面的 .bash_profile 請根據你使用 shell 的情況來修改。

Usage

以下都列舉了一些簡單常用的命令,通常還會有引數,具體的使用方式可以去官方網站上檢視。

命令 說明
brew 直接回車,顯示所有常用命令
brew –version 顯示版本
brew config 檢視配置
brew doctor 診斷問題
brew help 檢視幫助
brew update 更新版本
brew outdated 顯示過期的版本
brew upgrade 更新過期的版本
brew list 列出已安裝的包
brew info 檢視這個包的資訊
brew install 安裝包
brew uninstall 解除安裝包
brew tap 新增倉庫
brew untap 刪除倉庫

Cask

Cask 是建立在 homebrew 基礎上的 Mac 軟體安裝命令列工具。

安裝

brew tap caskroom/cask

note: 老版本的 homebrew 需要執行 brew install brew-cask,最新的版本預設整合了 Cask。

常用命令

  • brew cask list 列出所有可以被安裝的軟體

  • brew cask search google 查詢所有和 google 相關的應用

  • brew cask info qq 檢視qq應用的資訊

  • brew cask install qq 安裝 QQ

  • brew cask uninstall qq 解除安裝 QQ

一鍵裝機 App

brew cask install sublime-text cheatsheet key-codes iterm2 dropbox google-chrome evernote qq mou alfred the-unarchiver

note: Cask 軟體更新策略,brew cask uninstall APP && brew cask install APP 先刪除 App,再重新安裝

一鍵安裝 QuickLook 外掛

brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlprettypatch quicklook-csv betterzipql qlimagesize webpquicklook suspicious-package quicklookase qlvideo

Homebrew 中一些路徑的解釋

Caskroom  Frameworks  bin  include  opt   share
Cellar    Homebrew    etc  lib      sbin  var
  • Cellar : 資料夾存放的是所有包安裝所在路徑,包括二進位制,文件和配置檔案,按照這樣Cellar/包名/版本號/ 的形式來安放。

  • opt : 由於版本號隨著跟新而改變的,所以需要一個固定不變的路徑作為我們訪問二進位制和文件的路徑,這就是opt 的作用。

  • Homebrew : brew 程式所在路徑。

  • bin : 所有包安裝之後二進位制都會連結到這個路徑下。

  • share : 所有包安裝之後的文件都會連結到這個路徑下。

  • etc : 同上,所有包的配置檔案。

  • lib : 同上,所有包相關庫檔案。

  • Caskroom : app 檔案。

Zsh

mac 自帶 Shell 是 bash,已經很長時間沒更新了。(其實我也不確定這就成了換 zsh 的理由、尷尬)
所以我也說不出 zsh 比 bash 好在哪方面 -_-#
en~ 不過我可以給你們說說 zsh & oh-my-zsh 的使用體驗:逼 ~ 格 ~ 高 ~

上面是段玩笑話,現在進入主題吧。

安裝 zsh

note: mac 預設自帶 zsh。 通過 cat /etc/shells,可以檢視系統已存在幾種 Shell。

在終端執行:

brew install zsh

然後再執行 vi /etc/shells,將新安裝的 zsh 新增進去。

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh

note: 使用 vi 儲存時,如果遇到這個問題:E45: ‘readonly’ option is set (add ! to override),可以用這條命令 :w !sudo tee %

安裝 oh-my-zsh

選擇 curl 或者 wegt, 在終端執行:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

or

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

等下載安裝完成後,再手動修改和新增 .zshrc 檔案。步驟如下:

  1. 如果原先存在一個 ~/.zshrc 檔案,需備份。

    cp ~/.zshrc ~/.zshrc.orig

  2. 新建一個 ~/.zshrc 檔案。

    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

  3. 切換 Shell, 這樣 oh-my-zsh 就算完成了。

    chsh -s /usr/local/bin/zsh

note: 執行 echo $SHELL 可確定當前是哪個 Shell

自定義 ~/.zshrc

找到 plugins, 新增以下擴充套件:

plugins=(git nvm npm zsh-completions brew autojump osx zsh-syntax-highlighting catimg extract d zsh-autosuggestions)

note: zsh-syntax-highlighting , zsh-autosuggestions , autojump 需要單獨安裝。

~/.zshrc 最後新增下面兩行:

# Add env.sh
source ~/yourpath/env.sh

新建一個 env.sh:

#!/bin/zsh

# EDITOR
export EDITOR=`subl -w`
# export EDITOR=vim

# Owner
export USER_NAME="Richie"

# FileSearch
function f() { find . -iname "*$1*" ${@:2} }
function r() { grep "$1" ${@:2} -R . }

#mkdir and cd
function mkcd() { mkdir -p "$@" && cd "$_"; }

# nvm settings
export NVM_DIR="$HOME/.nvm"
. "$(brew --prefix nvm)/nvm.sh"

# autojump
[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh

# Ruby by rbenv
export RBENV_ROOT=/usr/local/var/rbenv
eval "$(rbenv init -)"

# Java by jenv
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

# JAVA_HOME
export JENV_ROOT=/usr/local/var/jenv
# JAVA_HOME=`/usr/libexec/java_home`
export JAVA_HOME=`/usr/libexec/java_home`

# zsh-completions
fpath=(/usr/local/share/zsh-completions $fpath)
source ~/.git-flow-completion.zsh
autoload -U compinit && compinit

# zsh-syntax-highlighting
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

#啟用 cd 命令的歷史紀錄,cd -[TAB]進入歷史路徑
setopt AUTO_PUSHD

# 如果連續輸入的命令相同,歷史紀錄中只保留一個
setopt HIST_IGNORE_DUPS

# 為歷史紀錄中的命令新增時間戳
setopt EXTENDED_HISTORY

# 自動補全功能
setopt AUTO_LIST
setopt AUTO_MENU

# Aliases

# Proxy
alias pc=`proxychains4`
alias cppcompile=`c++ -std=c++11 -stdlib=libc++`

# Use sublimetext for editing config files
alias zshconfig="subl ~/.zshrc"
alias envconfig="subl ~/yourpath/env.sh"

# Download by axel
alias dl="axel -o ~/Downloads"

# source .zshrc
alias sourcezsh="source ~/.zshrc"

# Command prompt
autoload -U promptinit && promptinit

alias cd~=`cd ~`
alias ..=`cd ..`
alias ...=`cd ../../`
alias cls=`clear`
alias ll=`ls -l`
alias la=`ls -a`
alias vi=`vim`
alias javac="javac -J-Dfile.encoding=utf8"
alias grep="grep --color=auto"

# Default open with application
alias -s html=subl
alias -s rb=subl
alias -s py=vi
alias -s js=vi
alias -s c=vi
alias -s java=vi
alias -s txt=vi

alias -s gz=`tar -xzvf`
alias -s tgz=`tar -xzvf`
alias -s zip=`unzip`
alias -s bz2=`tar -xjvf`

手動更新 oh-my-zsh

在終端執行:

upgrade_oh_my_zsh

解除安裝 oh-my-zsh

在終端執行:

uninstall_oh_my_zsh

Mac Proxy

經過一番努力,現在我們的 mac 可以做更多有趣的事情了。但唯一不開心的是、網路不好,下載慢,國外很多優質的資源無法訪問。
但這一切怎麼可能難住我們偉大的程式猿呢!(☆_☆)

shadowsocks 是國內作者 @clowwindy 在 github 上發起的開源專案。(因為一些原因,目前已從 github 移除)

privoxyproxychains-ng 同樣也是 github 上的開源專案。

Proxy SwitchyOmega 是 Chrome 外掛。

iTerm2 是命令列工具。

LaunchRocket 用來管理 Homebrew 安裝的服務。

  • ShadowsocksX + Proxy SwitchyOmega + Chrome 上網無國界

  1. 安裝 ShadowsocksX

    如果有 shadowsocks 賬號,開啟 ShadowsocksX 直接填寫。預設埠是 1080

    brew cask install shadowsocksx

  2. 安裝 Proxy SwitchyOmega。 Chrome Store

    note: Proxy SwitchyOmega,配置比較簡單,略過。

  • 使用 Proxychains-ng 代理 iTerm2

  1. 安裝 Proxychains-ng。

    brew install proxychains-ng
    
  2. Proxychains-ng, vi /usr/local/etc/proxychains.conf

    socks5 127.0.0.1 1080
    
  3. 設定 iTerm2 字首補全,Preferences -> Profiles -> Keys,新建一個快捷鍵 ⌥ + p,Action 選擇 Send Hex Code,鍵值為 0x1 0x70 0x63 0x20 0xd, 儲存生效。

    使用時,輸入 brew intall source,再按 ⌥ + p ,輸出:

    pc brew install source
    
  • 使用 Privoxy 將 socks 代理轉化為 http 代理

  1. 安裝 Privoxy。

        brew install privoxy
    
  2. Privoxy, vi /usr/local/etc/privoxy/config

    listen-address 0.0.0.0:9998
    forward-socks5 / 127.0.0.1:1080 .
    

    note: 9998是要監聽的 http 埠;1080 是 shadowsocks 監聽埠

  3. 安裝 LaunchRocket。

    brew cask install launchrocket
    
  4. 檢視 Privoxy 程式是否啟動,執行:

    ps aux | grep privoxy
    
  5. 檢視埠監聽是否成功,執行:

    netstat -an | grep 9998
    
  6. 設定代理

    // 設定 Aria2 代理
    aria2c --all-proxy=`http://127.0.0.1:9998` -D
    
    // 設定 Shell 代理,之後在 shell 裡的操作都會走代理,包括 git
    http_proxy=http://127.0.0.1:9998
    https_proxy=http://127.0.0.1:9998
    
    // 設定 Sublime Text 3 代理
    "http_proxy": "http://127.0.0.1:8118",
    "https_proxy": "http://127.0.0.1:8118",
    

FQA

git: how to solve “SSLRead() return error -9806” in OSX using brew

fix_git_sslread_9806

macOS 10.12.1 brew 遇到 SSLRead() return error 9086 ?

ShadowsocksX 更新不了 pac 檔案

不能更新 PAC 檔案

gfwlist 更新失敗

GFWList URL(Github)

GFWList URL(Backup)

Reference

在您的 Mac 上使用 Multi-Touch 手勢

Quick Look plugins

相關文章