<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          優(yōu)秀的程序員是如何利用工具來提升工作效率的?

          共 8669字,需瀏覽 18分鐘

           ·

          2020-08-04 20:23

          本篇文章將重點介紹一些可以提高程序猿工作效率的一些軟件和工具及相關配置(主要還是針對 Mac)。
          ?
          Mac built-in

          首先介紹的就是我覺得應該熟悉 Mac 內置的一些軟件及配置。

          trackpad 配置

          1. 啟用 Tap to click: 在 System Preferences -> Trackpad 中啟用, 用 tap 替換 click 的操作,明明輕輕 tap 就可以完成的, 為何還要用力點擊才 OK。現在偶爾用其他人電腦非得用力 click 就太糾結了。同時,還有 "右鍵"功能, Secondary click, 用兩個手指 tap 彈出右鍵菜單。

          2. 開啟單詞選詞查詢: 選中某個中英文單詞后,三指 tab 會彈出詞典釋義。

          開啟單詞選詞查詢
          1. Scroll 方向: 這個自己用習慣了就好。由于我剛開始從 Win 轉向 Mac 的時候習慣用 Win 的那種方式,于是就沒有開啟 Scroll direction: natural, 然后也一直沿用至今。

          2. 其他手勢: 有必要熟悉一下,比如知道在 Win 環(huán)境下用 win+d 可以顯示桌面,相應的功能在 Mac 下如何做。

          快捷鍵

          作為程序猿,肯定離不開各種快捷鍵。對于 Mac 內置的一些快捷鍵,我們還是很有必要知道的。基本的復制/粘貼就不說了,常用的還有:

          空格鍵:?預覽
          cmd?+?,?:?設置
          cmd?+?-/=:?縮小/放大
          ctrl?+?u:?刪除到行首(與zsh沖突,?zsh中是刪除整行)
          ctrl?+?k:?刪除到行尾
          ctrl?+?p/n:?上/下移動一行或者前/后一個命令
          ctrl?+?b/f:?光標前/后移char
          esc?+?b/f:?光標前/后移word(蛋疼不能連續(xù)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 一起用的時候,不能連續(xù)使用。舉個例子,Terminal 中輸入了 git push origin source,光標在末尾,這時按住ctrl 不放, 按一下 w 即向前刪除一個單詞,第一次按 w 刪除 source,再按 w 刪除 origin。而 esc + d 不能這樣結合使用(如下 gif 連續(xù)按就不 work),esc 必須中途釋放再按才能 work。不知道是不是石頭使用的姿勢不對,有知道的朋友,還幫忙指出一下啊。?

          bash自動補全

          啥?你說上面快捷鍵 ctrl + w 等不太好按?按鍵特別別扭?

          你需要做的就是將 caps lock 映射為 ctrlKeyboard -> Modifier Keys修改,目前我筆記本上的 ctrl 鍵無效。不過,一般情況下我用我的 HHKB,這種映射方式正好符合 HHKB 的布局。其實石頭是在買 HHKB 之前就修改的這個映射,所以切換自如。

          另外,借助Karabiner,可以將一些常用的方向鍵(上下左右)重新映射一下, 比如我目前是 s + h/j/k/l 來表示方向,手不用太移動就能直接按方向(HHKB 本身按方向太麻煩, Mac 內置鍵盤有方向鍵還需要大幅度移動手),用起來方便多了。

          Mac 內置的更多的快捷鍵列表可以參考 Mac 官網[1]

          截圖

          這個從快捷鍵中單獨列出來了,就強調下這個功能。

          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官網[4]有介紹功能。

          以下是覺得可能常用的功能。

          1. 分屏功能

            • cmd + d 豎著分屏, cmd + shift + d 橫著分屏
            • cmd + t 新建一個 tab,cmd + num 切換到第 num 個 tab
            • 當前窗口含有分屏時, 通過 cmd + [cmd + ] 來進行切換小的分屏
          2. 熱鍵 設置一個熱鍵,比如我的是 alt + 空格, 彈出 iTerm2, 且以半透明的方式顯示在當前 active 的窗口上面。

          iTerm2 hotkey
          1. 搜索
            • cmd + f搜索輸入關鍵字后,匹配的會黃色高亮,此時按 tab 或者 shift + tab 會自動向后/前以 word 的方式選中高亮的,并自動 copy 到剪切板。
            • cmd + alt + e,在所有的 tab 中全局搜索,搜索出候選項后,再選擇你想要進入的 tab。
          iTerm2 search
          1. 密碼

          這個功能可能會常用,程序猿得經常登錄到遠程服務器吧,密碼又記不住。可以把常用密碼保存起來,需要輸入密碼的時候,用快捷鍵 Option + cmd + f 彈出密碼管理器,選擇一個自動輸入即可。

          密碼管理
          1. 其他
            • 新版本的 iTerm2 還支持直接在控制臺里 ls 圖片文件(圖片顯示在控制臺里)。(如上圖下半部分,連 gif 都支持)
            • 自動識別控制臺里的內容,如含有鏈接或者本地文件路徑可以用 cmd 加點擊的方式直接打開鏈接或者文件(如下圖上半部分)。這個功能很重要呢,比如在編譯過程中,出現了 warning 或者 error,一般會打印出具體文件路徑,此時直接從控制臺就能打開文件進行 fix 了。
            • 自動補全,iTerm2 本身是支持自動補全的(cmd + ;),不過建議直接結合后面的zsh 使用。cmd + shift + h 剪貼板歷史(下圖最后一行)。
            • 一些高級的功能目前可能處于測試版本,你若用的穩(wěn)定版是不支持的,需要到官網下測試版。還有更多的功能請到 iTerm2 官網探索吧。
          iTerm2 imgcat

          ?

          zsh

          這個墻裂推薦啊。結合oh my zsh[5],豐富的[插件資源(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'



          1. autojump: 這個也炒雞贊。會自動記錄你 cd 過的目錄,下次你直接 j keyword 就會自動 cd 到以 keyword 匹配的目錄。輸入 d 會展示當前會話訪問過的目錄,然后對應目錄有標號,接下來按標號即可跳轉。

          2. osx: 舉個最簡單的例子,比如你現在正在 finder 中瀏覽一個很深的目錄,現在突然想 cd 到這個目錄去做一些命令操作。如果你用 Xtrafinder 這樣的軟件的話道有這樣的功能,如果配上這個插件,你直接輸入 cdf (cd finder)就自動 cd 到 finder 打開的目錄下。

          3. zsh-autosuggestions,如下圖所示,我在 app-in-mac 這個目錄下,剛輸入了 git, 此時光標還在 p 前面, zsh 就已經自動給我補全了 git push origin source, 此時我只要按 ctrl + e 跳轉到行尾(所以熟悉上文中的快捷鍵很有必要啊),回車即可執(zhí)行命令了。

          iTerm2 zsh plugins

          更多的還是請到官網查看。

          ? ?

          sublime text

          文本編輯器,也有豐富的插件支持,直接到sublime官網[6]看吧。這個 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[7]),不同電腦只需要再建一個軟鏈到github 中的 vimrc 即可。

          vim 自動補全
          • Vundle/Pathogen: 插件管理,我用的Pathogen,直接將下面 github repo clone 到 ~/.vim/bundle/ 目錄下即可。
          • NERDTree: 文件目錄樹NERDTree[8]
          • YouCompleteMe:YouCompleteMe[9] 自動補全,對C系列,結合其他的可支持 Java/Python/Js 等, ?跪求 Scala 支持
          • ctrlp.vim:快速搜索文件 ctrlp[10]
          • minibufexpl.vim: 會把最近打開的文件列出來方便跳轉,minibufexpl.vim github src[11]conque-term: shell 跑在 vim 里面,conque-term github src[12]
          • ag: 代碼搜索, 可結合 ctrlp.vim,如果后者搜索太慢的話,ag github src[13]
          • tagbar/taglist: 標簽,能顯示類結構信息等,tagbar github src[14]
          • vim-surround: ?處理諸如 (), "", [] 等配對信息,[vim-surround github src](https://github.com/tpope/vim-surround.git] 等配對信息,[vim-surroundgithub src" "]` 等配對信息,[vim-surround github src"),vim-surround ref[15]
          • vim-easymotion: 快速跳轉,關鍵字后會給匹配到的標記,再選標記并跳轉(類似后文介紹 Chrome 插件的Vimium中的鏈接標記并跳轉功能,按鍵 f 會將本文所有鏈接突出顯示并用字母標記,然后按相應的字母則會新開標簽頁打開)。vim-easymotion github src[16]vim-easymotion ref[17]
          • vim-powerline: 增強狀態(tài)欄vim-powerline github src[18]
          • vim-indent-guides: 縮進可視化,vim-indent-guides github src[19]

          具體效果等配置方法可以參考下面的兩篇文章,插件具體用法可閱讀具體插件的 doc。

          Reference

          • 將你的 Vim 打造成輕巧強大的IDE[20]
          • 所需即所獲:像 IDE 一樣使用 vim[21]


          Dash

          其實介紹前文 介紹 Alfred 已經提到過,這里再介紹一下,程序猿必備神器。

          內置各種語言,各種環(huán)境的各種文檔。該 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 切換;
          • 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: 統(tǒng)計文件字節(jié)數/字數/行數

          結合這些命令可能就能完成某些復雜的功能,舉個例子:

          如線上的web 訪問日志會記錄 請求時間,請求路徑,參數 等等。現在需要統(tǒng)計當天請求路徑為 A,排名前10的參數,就可以 grep 路徑A | cut 取出想要的數據列 | sort | uniq 之類的。

          或者比如統(tǒng)計 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

          其他的可能較少用,但一旦用,能省不少時間。網上也有一些 online 的工具,但哪有這個快準狠。

          • openssl sha1/aes-256-ecb/des/base64 等等: 比如經常要和其他服務聯調,有驗證簽名等,就可以臨時用 shell 寫個腳本,驗證一下看看 API 的返回值和效果。
          • md5/base64: 常見的 md5,base64 編碼。
          • sips: scriptable image processing system 比如批量處理圖片大小,壓縮等等。





          參考資料

          [1]

          Mac 官網:?https://support.apple.com/zh-cn/HT201236

          [2]

          brew:?http://brew.sh/

          [3]

          brew-cask:?https://caskroom.github.io/

          [4]

          iTerm2官網:?http://www.iterm2.com/features.html

          [5]

          oh my zsh:?http://ohmyz.sh/

          [6]

          sublime官網:?http://www.sublimetext.com/

          [7]

          ref vimconfigs:?https://github.com/tl3shi/vimconfigs.git

          [8]

          NERDTree:?https://github.com/scrooloose/nerdtree.git

          [9]

          YouCompleteMe:?https://github.com/Valloric/YouCompleteMe

          [10]

          快速搜索文件 ctrlp:?https://github.com/ctrlpvim/ctrlp.vim

          [11]

          minibufexpl.vim github src:?https://github.com/fholgado/minibufexpl.vim.git

          [12]

          conque-term github src:?https://github.com/tl3shi/conque-term.git

          [13]

          ag github src:?https://github.com/rking/ag.vim.git

          [14]

          tagbar github src:?https://github.com/majutsushi/tagbar.git

          [15]

          vim-surround ref:?http://zuyunfei.com/2013/04/17/killer-plugin-of-vim-surround/

          [16]

          vim-easymotion github src:?https://github.com/easymotion/vim-easymotion.git

          [17]

          vim-easymotion ref:?http://www.wklken.me/posts/2015/06/07/vim-plugin-easymotion.html

          [18]

          vim-powerline github src:?https://github.com/Lokaltog/vim-powerline.git

          [19]

          vim-indent-guides github src:?https://github.com/nathanaelkane/vim-indent-guides

          [20]

          將你的 Vim 打造成輕巧強大的IDE:?http://yuez.me/jiang-ni-de-vim-da-zao-cheng-qing-qiao-qiang-da-de-ide/

          [21]

          所需即所獲:像 IDE 一樣使用 vim:?https://github.com/yangyangwithgnu/use_vim_as_ide

          [22]

          石頭遷移 wordpress 到 jekyll:?https://www.tanglei.name/blog/give-up-wordpress-to-jekyll.html



          有道無術,術可成;有術無道,止于術

          歡迎大家關注Java之道公眾號


          好文章,我在看??

          瀏覽 21
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美亚洲乱伦 | 骚无码| 日韩高清无码18禁免费 | 无码乱伦网站 | 国产福利精品视频 |