優秀程式設計師是怎樣提高敲程式碼的效率?有這些工具就夠了!

優秀程式設計師是怎樣提高敲程式碼的效率?有這些工具就夠了!

作者 | 碼農唐磊

優秀程式設計師是怎樣提高敲程式碼的效率?有這些工具就夠了!

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 比如批次處理圖片大小,壓縮等等。

優秀程式設計師是怎樣提高敲程式碼的效率?有這些工具就夠了!