優秀程式設計師是怎樣提高敲程式碼的效率?有這些工具就夠了!
作者 | 碼農唐磊
Mac built-in
首先介紹的就是我覺得應該熟悉 Mac 內建的一些軟體及配置。
trackpad 配置
1。 啟用 Tap to click:在 System Preferences -> Trackpad 中啟用, 用 tap 替換 click 的操作,明明輕輕 tap 就可以完成的, 為何還要用力點選才 OK。現在偶爾用其他人電腦非得用力 click 就太糾結了。同時,還有 “右鍵”功能,Secondary click,用兩個手指 tap 彈出右鍵選單。
2。 開啟單詞選詞查詢:選中某個中英文單詞後,三指 tab 會彈出詞典釋義。這個在石頭哥之前的文章中也有介紹。
3。 Scroll 方向: 這個自己用習慣了就好。由於我剛開始從 Win 轉向 Mac 的時候習慣用 Win 的那種方式,於是就沒有開啟 Scroll direction: natural,然後也一直沿用至今。
4。 其他手勢:有必要熟悉一下,比如知道在 Win 環境下用 win+d 可以顯示桌面,相應的功能在 Mac 下如何做。
快捷鍵
作為程式猿,肯定離不開各種快捷鍵。對於 Mac 內建的一些快捷鍵,我們還是很有必要知道的。基本的複製/貼上就不說了,常用的還有:
空格鍵: 預覽
cmd + , : 設定
cmd + -/=: 縮小/放大
ctrl + u: 刪除到行首(與zsh衝突, zsh中是刪除整行)
ctrl + k: 刪除到行尾
ctrl + p/n: 上/下移動一行或者前/後一個命令
ctrl + b/f: 游標前/後移char
esc + b/f: 游標前/後移word(蛋疼不能連續work)
ctrl + a/e: 到行首/行尾
ctrl + h/d: 刪前/後字元
ctrl + y: 貼上
ctrl + w: 刪除前一個單詞
esc + d: 刪後一個單詞
ctrl + _: undo
ctrl + r: bck-i-search/reverse-i-search,輸入關鍵字搜尋歷史命令
上面的這些快捷鍵特別是在敲命令時還是很有用的(可能有的確實是在命令列中才生效),特別是結合 zsh 自動補全等功能。
比較 DT 的是就是 esc 一起用的時候,不能連續使用。舉個例子,Terminal 中輸入了 git push origin source,游標在末尾,這時按住ctrl 不放, 按一下 w 即向前刪除一個單詞,第一次按 w 刪除 source,再按 w 刪除 origin。而 esc + d 不能這樣結合使用(如下 gif 連續按就不 work),esc 必須中途釋放再按才能 work。不知道是不是石頭使用的姿勢不對,有知道的朋友,還幫忙指出一下啊。
bash自動補全
啥?你說上面快捷鍵 ctrl + w 等不太好按?按鍵特別彆扭?
你需要做的就是將 caps lock 對映為 ctrl, Keyboard -> Modifier Keys修改,目前我筆記本上的 ctrl 鍵無效。不過,一般情況下我用我的 HHKB,這種對映方式正好符合 HHKB 的佈局。其實石頭是在買 HHKB 之前就修改的這個對映,所以切換自如。
另外,藉助之前介紹的 Karabiner,可以將一些常用的方向鍵(上下左右)重新對映一下, 比如我目前是 s + h/j/k/l 來表示方向,手不用太移動就能直接按方向( HHKB 本身按方向太麻煩, Mac 內建鍵盤有方向鍵還需要大幅度移動手),用起來方便多了。
Mac 內建的更多的快捷鍵列表可以參考 Mac 官網。
其他還有一些常用的軟體的快捷鍵,可以用之前介紹的軟體 cheetsheet,長按 cmd, 可彈出當前 active 的軟體的快捷鍵。
截圖
這個從快捷鍵中單獨列出來了,就強調下這個功能。
cmd + shift + 3 擷取整個螢幕。cmd + shift + 4 部分視窗,出現十字供選取,若此時按空格鍵(這個技能得點贊),會選取當前應用的視窗,再 tap 即可完成截圖。
上面快捷鍵是截圖後以檔案形式儲存在桌面(預設是桌面,當然你也可以自己修改儲存位置), 在上面快捷鍵基礎上再同時按 ctrl 就會把圖片儲存在記憶體/剪貼簿中,直接去相應視窗貼上即可。
home brew
類似 Centos 的 yum, Ubuntu 的 apt-get,能夠方便管理安裝軟體包。Mac 上類似的應用還有 port, 我剛開始試用過 port,貌似 brew 上的源會多一些。
brew-cask 是 brew 的一個加強版,可以安裝一些桌面應用,例如 Chrome 等等之類。
這裡就不多介紹了,詳情可以到官網檢視:
brew[2]
brew-cask[3]
iTerm2
iTerm2官網有介紹功能。以下是覺得可能常用的功能。
1。分屏功能
cmd + d 豎著分屏, cmd + shift + d 橫著分屏
cmd + t 新建一個 tab,cmd + num 切換到第 num 個 tab
當前視窗含有分屏時, 透過 cmd + [ 和 cmd + ] 來進行切換小的分屏
2。熱鍵
設定一個熱鍵,比如我的是 alt + 空格, 彈出 iTerm2, 且以半透明的方式顯示在當前 active 的視窗上面。
iTerm2 hotkey
3。搜尋
cmd + f搜尋輸入關鍵字後,匹配的會黃色高亮,此時按 tab 或者 shift + tab 會自動向後/前以 word 的方式選中高亮的,並自動 copy 到剪下板。
cmd + alt + e,在所有的 tab 中全域性搜尋,搜尋出候選項後,再選擇你想要進入的 tab。
iTerm2 search
4。密碼
這個功能可能會常用,程式猿得經常登入到遠端伺服器吧,密碼又記不住。可以把常用密碼儲存起來,需要輸入密碼的時候,用快捷鍵 Option + cmd + f 彈出密碼管理器,選擇一個自動輸入即可。
密碼管理
5。其他
新版本的 iTerm2 還支援直接在控制檯裡 ls 圖片檔案(圖片顯示在控制檯裡)。(如上圖下半部分,連 gif 都支援)
自動識別控制檯裡的內容,如含有連結或者本地檔案路徑可以用 cmd 加點選的方式直接開啟連結或者檔案(如下圖上半部分)。這個功能很重要呢,比如在編譯過程中,出現了 warning 或者 error,一般會打印出具體檔案路徑,此時直接從控制檯就能開啟檔案進行 fix 了。
自動補全,iTerm2 本身是支援自動補全的(cmd + ;),不過建議直接結合後面的 zsh 使用。cmd + shift + h 剪貼簿歷史(下圖最後一行)。
一些高階的功能目前可能處於測試版本,你若用的穩定版是不支援的,需要到官網下測試版。還有更多的功能請到 iTerm2 官網探索吧。
iTerm2 imgcat
zsh
這個牆裂推薦啊。結合oh my zsh,豐富的[外掛資源(zsh)](https://github。com/robbyrussell/oh-my-zsh/wiki/Plugins-Overview “外掛資源(zsh ”外掛資源(zsh)“)”)。
語法高亮,自動補全等特別好,在此推薦的幾個外掛或功能。
1。 git: 當前目錄若是在一個 git repo 下面的話,會自動顯示當前的分支資訊等等。然後可以自己搞一些 alias,簡寫命令,比如石頭常用的一些:
alias gs=‘git status’
alias gb=‘git branch -va’
alias gco=‘git checkout’
alias ga=‘git add’
alias gc=‘git commit -m’
alias gp=‘git push’
alias gfom=‘git fetch origin master’
alias gfod=‘git fetch origin develop’
alias grod=‘git rebase origin/develop’
alias grom=‘git rebase origin/master’
2。 autojump: 這個也超級贊。會自動記錄你 cd 過的目錄,下次你直接 j keyword 就會自動 cd 到以 keyword 匹配的目錄。輸入 d 會展示當前會話訪問過的目錄,然後對應目錄有標號,接下來按標號即可跳轉。
3。osx: 舉個最簡單的例子,比如你現在正在 finder 中瀏覽一個很深的目錄,現在突然想 cd 到這個目錄去做一些命令操作。如果你用 Xtrafinder 這樣的軟體的話倒有這樣的功能,如果配上這個外掛,你直接輸入 cdf (cd finder) 就自動 cd 到 finder 開啟的目錄下。
4。zsh-autosuggestions,如下圖所示,我在 app-in-mac 這個目錄下,剛輸入了 git, 此時游標還在 p 前面, zsh 就已經自動給我補全了 git push origin source, 此時我只要按 ctrl + e 跳轉到行尾(所以熟悉上文中的快捷鍵很有必要啊),回車即可執行命令了。
iTerm2 zsh plugins
更多的還是請到官網檢視。
sublime text
文字編輯器,也有豐富的外掛支援,直接到 sublime 官網看吧。這個 App,我用得也不是很多。
這裡分享一個小的功能,怎麼在命令列用 sublime 開啟特定的檔案。其實就是新增一個軟鏈即可(直接 open filename 會以檔案預設關鍵的軟體開啟)。
app-in-mac git:(source) subl dungeon-game。cpp
app-in-mac git:(source) which subl
/usr/local/bin/subl
app-in-mac git:(source) ls -la /usr/local/bin/subl
lrwxr-xr-x 1 tanglei admin 62 1 24 2016 /usr/local/bin/subl -> /Applications/Sublime Text。app/Contents/SharedSupport/bin/subl
Vim
介紹 Vim 的文章也很多了,這裡就不詳細展開了。分享下石頭用的部分外掛。為了讓多臺電腦同步我的 vim 配置/外掛等,我直接放 github 了( ref vimconfigs ),不同電腦只需要再建一個軟鏈到 github 中的 vimrc 即可。
vim 自動補全
Vundle/Pathogen: 外掛管理,我用的Pathogen,直接將下面 github repo clone 到 ~/。vim/bundle/ 目錄下即可。
NERDTree: 檔案目錄樹 NERDTree。
YouCompleteMe: YouCompleteMe 自動補全,對C系列,結合其他的可支援 Java/Python/Js 等,跪求 Scala 支援。
ctrlp。vim: 快速搜尋檔案 ctrlp。
minibufexpl。vim: 會把最近開啟的檔案列出來方便跳轉,minibufexpl。vim github src。
conque-term: shell 跑在 vim 裡面,conque-term github src。
ag: 程式碼搜尋, 可結合 ctrlp。vim,如果後者搜尋太慢的話, ag github src。
tagbar/taglist: 標籤,能顯示類結構資訊等,tagbar github src。
vim-surround: 處理諸如 (), “”, [] 等配對資訊,[vim-surround github src](https://github。com/tpope/vim-surround。git] 等配對資訊,[vim-surroundgithub src“ ”]` 等配對資訊,[vim-surround github src“), vim-surround ref。
vim-easymotion: 快速跳轉,關鍵字後會給匹配到的標記,再選標記並跳轉(類似後文介紹 Chrome 外掛的 Vimium 中的連結標記並跳轉功能,按鍵 f 會將本文所有連結突出顯示並用字母標記,然後按相應的字母則會新開標籤頁開啟)。vim-easymotion github src, vim-easymotion ref。
vim-powerline: 增強狀態列 vim-powerline github src。
vim-indent-guides: 縮排視覺化,vim-indent-guides github src。
具體效果等配置方法可以參考下面的兩篇文章,外掛具體用法可閱讀具體外掛的 doc。
Reference
將你的 Vim 打造成輕巧強大的 IDE
所需即所獲:像 IDE 一樣使用 vim
Dash
其實前文介紹中 Alfred 已經提到過,這裡再介紹一下——程式猿必備神器。
內建各種語言,各種環境的各種文件。該 App 還提供各種 API 供其它工具互動使用。例如 Vim (不是想象當中自動補全功能,只是能夠快捷地搜尋 API ), Sublime 等。 (p。s 要是有人寫了一個 Vim 外掛,能夠支援呼叫 dash 的 API(如果有的話) 自動補全程式碼, 那應該會很受歡迎的)。
dash 搜尋 API
dash
其它App
Chrome
外掛
AdBlock: 廣告遮蔽;
EditThisCookie: 修改 cookie;
Evernote Web Clipper: 印象筆記;
JSONView and JSONLint for Google Chrome: 請求返回的 json 進行 beautify 方便檢視;
Markdown Here: 在富文字輸入markdown, 渲染成 html;
Markdown Preview Plus: 渲染 。md 檔案,相當於 preview markdown;
Open Screenshot: 網頁截圖,能夠自動下拉截長圖;
Postman: 請求偽造/抓包等,也可以用 curl;
Proxy SwitchySharp: proxy 切換;
RescueTime: 前文有介紹的 RescueTime;
undirect: google/baidu 搜尋結果,點選直達網站,這個貌似不太好用了。徵求替代品;
Vimium: 操作 vim 一樣操作瀏覽器,移動查詢等功能,還有前文提到的快速標記連結並跳轉;
Charles
類 Windows 下 Fiddler 抓包應用。
相關命令 tcpdump。
其它有用的命令列
一些好用的命令(基本的什麼 ls/cd/cp/rm 之類的這裡就直接忽略了),我覺得作為程式猿還是應該瞭解,至少只當某個場景下直接用相應的命令就能解決。具體引數可以再 ——help 或者 man commond 再看。
screen: 特別是 ssh 到登入遠端時用以管理會話。
curl: 網路請求,相關的還有 traceroute, dig 等。
find: 檔案查詢。
grep/zgrep/zcat: 檢視日誌的時候用。
awk: 這個本身就很強大了,具體程式設計語法不用太掌握但可以瞭解一些基本的用法,幫助你拼接一些語句。比如石頭常用來批次拼接一些 SQL 語句。
sed: 文字替換,還有 tr,注意 sed 的語法 Mac 和 一般 Linux 還有些不一樣( 比如原文替換的時候 mac 裡需要用引數 -i ”“), 比如之前石頭遷移 wordpress 到 jekyll[22] 上的時候需要將一些連結整體替換成新的路徑。
cut: 按列取資料,awk 也可以。
sort: 這個就不多說了。
uniq: 一般和 sort 一塊用,只能去重相鄰的行。
diff: 比較檔案,類似的還有 comm (輸出3列,分別是: 只在檔案1, 只在檔案2和兩個檔案都在的行)。
paste: 兩個檔案按列拼接。
od: 以16/8/2進位制檢視檔案。
wc: 統計檔案位元組數/字數/行數。
結合這些命令可能就能完成某些複雜的功能,舉個例子:
如線上的web 訪問日誌會記錄 請求時間,請求路徑,引數 等等。現在需要統計當天請求路徑為 A,排名前10的引數,就可以 grep 路徑 A | cut 取出想要的資料列 | sort | uniq 之類的。
或者比如統計 http 404 請求最多的10個路徑。再比如,隨機生成3個長度為8包含字母數字的字串(偶爾會用到,比如各種生產 secret key 的時候),直接用如下命令即可。
_includes git:(source) cat /dev/urandom | sed ‘s/[^a-zA-Z0-9]//g’ | head -n 3 | cut -c 1-8
MaL6nEmZ
00m2Ub19
rsc4AOQm
石頭之前寫過一篇綜合應用,就是用 shell 指令碼來完成一些統計功能。文章在這裡“大資料”分析首批北京積分落戶同學,文中介紹瞭如何根據一個 json 檔案如何快速統計取得戶口名額最多的 top10 公司,獲取取得戶口名額的人中姓氏最多的等等。
其它的可能較少用,但一旦用,能省不少時間。網上也有一些 online 的工具,但哪有這個快準狠。
openssl sha1/aes-256-ecb/des/base64 等等: 比如經常要和其他服務聯調,有驗證簽名等,就可以臨時用 shell 寫個指令碼,驗證一下看看 API 的返回值和效果。
md5/base64: 常見的 md5,base64 編碼。
sips: scriptable image processing system 比如批次處理圖片大小,壓縮等等。