如何給碼農??????的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
+ 預覽文件
工具
左側是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
好用的多
- 敲c特別友好 一鍵for 一鍵class
- 配置之後 可以保存時 自動 調整格式
- 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
- 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
就能用了 心累
??歡迎 大神 補充
推薦閱讀: