標籤:

如何給碼農??????的Mac開光

點這裡排版好(逼乎圖壓縮的太厲害了) update一下

人人都說Mac好

那麼 有一台程序員??????必備的Mac的我們 應該如何配置Terminal 舞裝??我們的Mac呢

Ps: Ubuntu|Centos 配置Terminal思路與Mac相同 只是brew -> apt-get|yum or 源碼安裝

PPS: 在這裡特別感謝帶我入門的山川dalao ??

友情提醒: 按照教程配置下來 即使熟練起碼也要1h以上 maybe可以先收藏??

Update fzf usage from @PegasusWang

必須提一下 以前一直都以為fzf只能在Mac上用

原來連Win都支持 那 必須強推這個神器了 2019.01.13

本文包括Terminal(zsh,fzf,vim),Alfred,Sublime, Other配置

Motivation

這篇文章 的Motivation 主要是 因為 在生活中 總有 一些 friends 問我

」為啥 我們 都是 Mac 怎麼感覺你的 高端一點「

我總是 笑著 回答 我這個 是 真Mac

實際上 這些 只是 配置的問題 配置好的 Mac 比 Win 好的 不是 一點點

之所以 說 Mac 最適合 程序員??????

一個是因為 基於Unix 天生適合開發 二是 工具生態比較多樣 相較於Win 更精緻

當然 配置 只是 為了 更高效的work 本質上 是沒什麼玩意的 關鍵是養成 習慣 提高效率

當然 由於篇幅的原因 只能 講一些 我覺得 最能提高工作效率的 工具 ??歡迎 大神 補充

Terminal

iTerm2 + zsh + fzf

Why is iTerm2

Terminal 是 進入 Unix的 入口

但MacOs 自帶的 Terminal 在 功能上 不夠強大 一般都會用iTerm 替代

Advantage: ??

可定製化Hotkey, 一鍵召出iTerm2 (不再需要?+Tab 或者 通過spotlight切換)

快捷的組合鍵

  • ?+Shift+E 召喚時間線
  • ?+Option+b 時光機
  • ?+T 新Tab
  • ?+D 水平分屏
  • ?+← 切換Tab / ?+shift+← 切換分屏

總之 就是 好看 好用

來看下效果圖

zsh

關於Bash 的配置 我的想法 就是 只要 好看 好用就行 hhh?? 參考為什麼說 zsh 是 shell 中的極品?

zsh 的配置 主要 的 功能 是 命令高亮(識別 命令 正確性)拓展性高 支持 命令補全 et al.

這裡的 高亮 是克制的 是為了 高效 不是 為了 酷炫

在這裡 我配置了 brew zsh oh-my-zsh zsh-autosuggestion zsh-syntax-highlighting

具體步驟的 參考鏈接 見下面??的注釋

# install Command Line Tools
$ xcode-select --install

# install software manager homebrew(maybe very slowly - you can use cellular)
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# change mirror to tuna
$ cd "$(brew --repo)"
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

# install zsh & change bash -> zsh
$ brew install zsh git autojump
$ chsh -s /bin/zsh

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

# syntax highlighting
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
$ echo "source $ZSH_CUSTOM/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc

# zsh-autosuggestions
$ git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

# configure system set in ~/.zshrc
$ vim ~/.zshrc

# https://github.com/robbyrussell/oh-my-zsh/wiki/themes
# https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes
ZSH_THEME="avit" # zsh theme like ys refer web??
plugins=(
git
docker
zsh-autosuggestion # autosuggestion
)

# alias
alias dkst="docker stats"
alias dkpsa="docker ps -a"
alias dkimgs="docker images"
alias dkcpup="docker-compose up -d"
alias dkcpdown="docker-compose down"
alias dkcpstart="docker-compose start"
alias dkcpstop="docker-compose stop"
alias setproxy="export ALL_PROXY=socks5://127.0.0.1:1086" # terminal proxy
alias unsetproxy="unset ALL_PROXY"

export HOMEBREW_NO_AUTO_UPDATE=true # no update when use brew

source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source $ZSH_CUSTOM/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

# end of edit ~/.zshrc
$ source ~/.zshrc

fzf

fzf = fuzzy finder

是一個用Go寫的功能爆炸強的插件 ~~(每次我一用fzf 別人都會投來異樣的目光 ??)~~

fzf 的主要功能有 查找文件 歷史命令查詢 快速進入目錄

我用fzf 相當於 一個 代碼粘貼本 + 快速cd + 預覽文件工具

https://www.zhihu.com/video/1067815236349935616

左側是Ctrl+R歷史命令查詢??(支持模糊匹配) 右側是^(默認Alt+C 可DIY)快速進入目錄 回車之後 直接進入

PS: 官方文檔給的基本操作是 cd **+Tab生成列表+Enter生成命令+Enter執行 快捷鍵可以把4步變成兩步 還是很Nice的??

下面給出Mac和Ubuntu的配置Code

# for Mac
# install fd & fzf
$ brew install fd fzf

# bind default key-binding
$ /usr/local/opt/fzf/install
$ source ~/.zshrc

# alter filefind to fd
$ vim ~/.zshrc
export FZF_DEFAULT_COMMAND=fd --type file
export FZF_CTRL_T_COMMAND=$FZF_DEFAULT_COMMAND
export FZF_ALT_C_COMMAND="fd -t d . "

$ source ~/.zshrc

# Ctrl+R History command; Ctrl+R file catalog
# if you want to DIY key of like Atl + C
# maybe line-num is not 66, but must nearby
$ vim /usr/local/opt/fzf/shell/key-bindings.zsh
- 66 bindkey ec fzf-cd-widget
+ 66 bindkey ^ fzf-cd-widget

$ source /usr/local/opt/fzf/shell/key-bindings.zsh

# for Ubuntu
# install fzf & bind default key-binding
$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
$ ~/.fzf/install
$ source ~/.zshrc

# install fd, url from https://github.com/sharkdp/fd/releases
$ wget https://github.com/sharkdp/fd/releases/download/v7.2.0/fd_7.2.0_amd64.deb
$ sudo dpkg -i fd_7.2.0_amd64.deb

# alter filefind to fd
$ vim ~/.zshrc
export FZF_DEFAULT_COMMAND=fd --type file
export FZF_CTRL_T_COMMAND=$FZF_DEFAULT_COMMAND
export FZF_ALT_C_COMMAND="fd -t d . "

$ source ~/.zshrc

# Ctrl+R History command; Ctrl+R file catalog
# if you want to DIY key of like Atl + C
# maybe line-num is not 64, but must nearby
$ vim ~/.fzf/shell/key-bindings.zsh
- 64 bindkey ec fzf-cd-widget
+ 64 bindkey ^ fzf-cd-widget

$ source ~/.fzf/shell/key-bindings.zsh

Preview

特別介紹一下Preview 功能

我們知道在Unix環境下 我們要看文件的時候 必須一個個打開 當文件數量較大的場景

比如說 我們調了10個參數 做了20組實驗 每組實驗拿到30輪結果 這時候 一個個vim開 怕不是要吐了 這時候你是不是開始懷念有GUI的世界

當然 你可以寫個bash腳本 把所有的文件合到一個文件 然後 只看一個file就行了

fzf給出了另外一個炫酷的解決方案

利用fzf --preview 完成對文件的預覽 詳見上節右側視頻

# set alias
$ vim ~/.zshrc
alias pp=fzf --preview ""[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (highlight -O ansi -l {} || coderay {} || rougify {} || cat {}) 2> /dev/null | head -500""
$ source ~/.zshrc

設置完別名之後 利用 pp 即可完成文件的預覽

還有dalao利用fzf做git branch更改比較的預覽 更多的酷炫的功能詳見 fzf Document

vim

vim 配置的必要性 想來不用說了

當然 最重要的是熟練運用 vim的快捷鍵

vim不只是一個文本編輯器 它的功能 和 sublime基本一致 只要配置的好 一樣神器

vim也有它自己的包管理器:PlugInstall 參考 Vim Plugin Manager

# At first of all, we shoudld install vimrc, the ultimate configuration of Vim
# Ref https://github.com/amix/vimrc
$ git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
$ sh ~/.vim_runtime/install_awesome_vimrc.sh

其實 簡單的配置 到這裡 就結束了 但 比如說 你想要有可以滑鼠控制游標 等 功能 就需要繼續配置了

$ vim ~/.vimrc
set runtimepath+=~/.vim_runtime
set nocompatible " 去掉有關vi一致性模式,避免以前版本的bug和局限
set nu! " 顯示行號
set history=1000 " 記錄歷史的行數
set autoindent " vim使用自動對齊,也就是把當前行的對齊格式應用到下一行(自動縮進)
set cindent " cindent是特別針對 C語言語法自動縮進
set smartindent " 依據上面的對齊格式,智能的選擇對齊方式,對於類似C語言編寫上有用
set tabstop=4 " 設置tab鍵為4個空格,
set ai!
set showmatch " 設置匹配模式,類似當輸入一個左括弧時會匹配相應的右括弧
set guioptions-=T " 去除vim的GUI版本中得toolbar
set vb t_vb= " 當vim進行編輯時,如果命令錯誤,會發出警報,該設置去掉警報
set ruler " 在編輯過程中,在右下角顯示游標位置的狀態行
set incsearch
set mouse=a " 滑鼠控制游標

source ~/.vim_runtime/vimrcs/basic.vim
source ~/.vim_runtime/vimrcs/filetypes.vim
source ~/.vim_runtime/vimrcs/plugins_config.vim
source ~/.vim_runtime/vimrcs/extended.vim

try
source ~/.vim_runtime/my_configs.vim
catch
endtry

call plug#begin(~/.vim/plugged) " 設置完:PlugInstall 參考 https://github.com/junegunn/vim-plug

call plug#end()

let g:seoul256_background = 236 " theme
colo seoul256

特別注意 配置完之後 一定不要 source ~/.vimrc

source 是用來令sh生效的 vimrc並不是 so 只需要配置好 放在那就行了 你下次 進入vim的時候 就知道 配置對不對了

再送大家一些在brew 中我覺得特別好用的包

$ mycli -u root -h localhost # mysql client
$ tree -I __pycache__|venv|data # product file tree without venv data __

Alfred

Alfred 是一個優於自帶的spotlight 的 搜索工具

比較喜歡它的 粘貼板workflow拓展

Clipboard

比如說 我之前 從某個網站上面 複製了 一個文本 但我現在 只記得 關鍵詞 想找下 複製的內容 這個時候 就很nice了 只需要?+Option+C 和我們平時複製的快捷鍵 幾乎一模一樣

這樣效率 提升 挺明顯的

在哪下載 maybe xclient 不要說 我告訴你的

workflow

workflow 相當於iOS的的Shortcuts捷達

通過 提前 設置好 程序流程 然後 主要 相應的命令就能啟動

  • 有道翻譯

因為用了有道智雲的API 相對於單機版的yd 精度提升很高 (支持句粒度的Transaction)

當然 需要去智雲註冊 然後配置一下

  • AlfredMagic

比較好用的就是變數名翻譯

媽媽再也不怕 我想不出 變數名了 還支持React/Vue/mdn 文檔查詢 StackOverflow 查詢

Sublime

除了 Java是在IntelliJ IDEA 里寫的 畢竟打jar那個參數 有點多

sublime又輕又好用 為啥不用呢

有dalao 問我為啥不用VsCode 主要是不好看(不直接說 丑 不是 留點面子嗎) 換了好幾個配色 找不到 自己看的順眼的

反正我用起來 sublime 好用的多

  1. 敲c特別友好 一鍵for 一鍵class
  2. 配置之後 可以保存時 自動 調整格式
  3. c編譯方便 Ctrl+B

Tools->Build System -> New Build System

copy以下 保存為c++.sublime-build

{
"cmd": ["bash", "-cpp", "g++ -std=c++11 ${file} -o ${file_path}/${file_base_name} && open -a Terminal.app ${file_path}/${file_base_name}"],
"working_dir": "$file_path",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c, source.c++",
}

然後在Tools->Build System選擇剛才設置的c++

附上Preferences

{
"auto_find_in_selection": true,
"bold_folder_labels": true,
"color_scheme": "Packages/Color Scheme - Default/Mariana.sublime-color-scheme",
"default_line_ending": "unix",
"dpi_scale": 1.0,
"draw_minimap_border": true,
"ensure_newline_at_eof_on_save": true,
"fade_fold_buttons": false,
"font_face": "Microsoft YaHei Mono",
"font_size": 13,
"highlight_line": true,
"highlight_modified_tabs": true,
"ignored_packages":
[
"SublimeTmpl",
"Vintage"
],
"save_on_focus_lost": true,
"theme": "Default.sublime-theme",
"translate_tabs_to_spaces": true,
"trim_automatic_white_space": true,
"trim_trailing_white_space_on_save": true,
"update_check": false,
"word_wrap": "true"
}

Other

其他有趣的Software,比如說: Path Finder: 文件管理器

Pdf Expert: pdf 閱讀器 可以直接按原有樣式修改文本

Vanilla|dozer: 菜單欄摺疊 感謝@iveevil su dalao推薦dozer

Things: 一個Todo list 工具 可以考慮結合Alfred的workflow使用

Contexts: 窗口切換管理

Typora: 顯式Mardown編輯器

Magnet|Moom: 分屏工具

QA

  1. How do you makre video

Q@gunjianpan:

哇 要吐槽一下Mac的Pr

本來想學校土豪買了Adobe全家桶

沒想到 會用的這麼累

1. 用Gifox錄屏 這個產生的Gif大小比較小

2. 用Pr 做字幕

3. 然後就發現保存的Gif大小 爆炸了 即使用imageOptim(使用gifsicle引擎的software 實證表明效果比命令行敲gifsicle要好) 也要18MB

4. 就想能不能先轉mp4再轉gif用了好多軟體 後來發現ffmpeg最好用 (brew install; ffmpeg -i xxx.mp4 xxx.gif)

5. 生成的gif 再過一遍imageOptim就能用了 心累

??歡迎 大神 補充


推薦閱讀:

TAG:Bash | zsh | Mac |