前言
作為程式設計師需要了解的東西有很多,日常編碼和寫指令碼脫離不開各式語言與 Linux 命令。為了記住一些雜亂的或不被經常使用的知識點,我們迫切需要一個“小抄”/備忘錄,小抄內容多了自然繁雜,所以我們希望這個小抄要:
- 簡潔:只包含你想要的內容,沒有其他「花邊」內容
- 快速:可以立即使用
- 全面:能基本包含你所有問題的答案
- 通用:它應該在任何地方、任何時間都可用,不需要任何準備
- 不唐突:它不應該讓你從主要任務上分心(比如減少應用切換)
- 輔導:它應該幫助你學習這個科目(在答案基礎上擴充套件知識)
- 不顯眼:應該可以在完全不被注意的情況下使用(就好比劃詞翻譯,滑鼠輕點就有答案)
老gong,你是想介紹哆啦A夢嗎?
<img src="https://cdn.jsdelivr.net/gh/FraserYu/img-host/blog-img20201115205225.png" style="zoom:25%;" />
非也,其實是 cheat.sh
cheat.sh 介紹
cheat.sh 就是一個可以滿足上述願望的小哆啦,目前在 Github 的形式是這樣滴:
Commit 也非常活躍,就是這麼一個哆啦
- 它提供一個簡單的 curl/瀏覽器介面方便我們查詢
- 目前覆蓋 58 種程式語言,多種 DBMS以及超過 1000 個UNIX/Linux 常用命令
- 提供對世界上最好的社群驅動的備忘單儲存庫的訪問,與StackOverflow持平(絕對是高質量的內容)
- 提供命令列客戶端
- 可以巢狀在程式碼編輯器中使用,比如 Intellij IDEA 和 VS-Code
- 支援一個特殊的隱身模式,可以完全隱形的使用它 (感覺挺神祕的呢)
先來認識一下,開啟命令列終端,使用 curl 命令輸入:
curl cht.sh
如何使用 cheat.sh
先拿幾個常用的 UNIX/Linux 命令練練手:
curl cht.sh/tar
瞧這整理的規範和簡潔不?
curl cht.sh/tr
答案依舊整潔規範, 同時還高亮顯示,友好的很啊
如果你不知道某個命令,還可以使用 ~Keyword
的形式來查詢,比如你想檢視如何建立快照
curl cht.sh/~snapshot
上面說過, cheat.sh 包含 1000 多個常用的 UNIX/Linux 命令,當需要的時候,按照語法 curl cht.sh/<you-cmd>
盡情查詢吧
除了 Linux 命令,我們還說支援 58 種語言,當寫程式碼時某個 API 不會用或需要完成某些操作,cheat.sh 依舊可以幫上忙,比如我總是記不住 Java Lambda 的 group 操作
curl cht.sh/java/lambda+group
記住下面的標準格式,搜尋的結果都是和 StackOverflow 一樣的高質量
如果這個答案還不是你想要的,你就可以新增數字進行翻頁獲取其他結果
另外你覺得結果中的註釋很礙眼的話,可以在每次查詢的後面加上 \?Q
,就像這樣:
curl cht.sh/java/lambda+group\?Q
當然每種語言都預設支援 :list 和 :help 兩種查詢方式,作為幫助指令,大家可以自行嘗試了,比如 go 語言
curl cht.sh/go/:list
curl cht.sh/go/:help
相信到這裡,你已經可以掌握 cheat.sh 的基本使用方式了
但是,這種 curl 方式總是顯得不是很方便,比如空格要用 +
替代,日常工作語言比如只有 Java,每次都要輸入 curl cht.sh/java/xxxxxxx 這樣就會顯得很麻煩, 為了解決這些問題,cheat.sh 很貼心,也提供了命令列客戶端,大大簡化了搜尋操作
Cheat.sh 命令列客戶端
安裝
安裝 CLI Client (Command Line Client)非常簡單,只需要依次執行下面的命令即可:
# 注意你的環境變數 PATH 已經 import 了 ~/bin 下的內容
mkdir -p ~/bin/
curl https://cht.sh/:cht.sh > ~/bin/cht.sh
chmod +x ~/bin/cht.sh
如果要保證 shell 模式可用,還需要安裝一個依賴 rlwrap
, 下面兩種安裝方式都可以(我直接用brew安裝的)
brew install rlwrap
# 或者
sudo apt install rlwrap
使用
有了 CLI Client 之後,來看一看搜尋上的變化:
這個 CLI Client 還提供了一個更加便利的 shell 模式:
cht.sh --shell
如下圖,每次直接按照語言搜尋相關內容就可以了:
通常我們程式設計在一段時間內會用一種語言,我們可以進一步簡化搜尋過程,cd 到某個語言目錄下:
如果進入 shell 模式,同時想一次性進入某個語言目錄,也可以通過一條命令搞定:
cht.sh --shell java
隱身模式
相信很多小夥伴都配有劃詞工具,比如某個單詞不會了,選中相應的單詞,就會出來解釋,cheat.sh 也有類似的模式,進入某個語言目錄下之後,輸入 stealth Q
就可以進入這個模式了:
用滑鼠選中文字後,用起來的效果就是這樣滴:
不過這裡建議,搜尋的單詞不要超過 5 個
以上這些使用方式,預設都會呼叫它自己的服務,為了更快速的響應,我們可以搭建自己的服務,前提是要更改 CLI Client 的 server URL:
開啟或新建 ~/.cht.sh/cht.sh.conf
,新增
CHTSH_URL=https://cht.sh # URL of the cheat.sh server
然後就可以 run 自己的服務
git clone https://github.com/chubin/cheat.sh.git
cd cheat.sh
docker-compose up
最後訪問服務: http://localhost:8002
整合主流編輯器
cheat.sh 同樣和主流編輯器有很好的整合:
Feature | Emacs | Sublime | Vim | VSCode | IDEA | QtCreator |
---|---|---|---|---|---|---|
Command queries | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Queries from buffer | ✓ | ✓ | ✓ | |||
Toggle comments | ✓ | ✓ | ✓ | ✓ | ||
Prev/next answer | ✓ | ✓ | ✓ | ✓ | ||
Multiple answers | ✓ | ✓ | ||||
Warnings as queries | ✓ | |||||
Queries history | ✓ | ✓ | ||||
Session id | ✓ | |||||
Configurable server | ✓ | ✓ | ✓ | ✓ |
Vim 的整合度是最高的,大家可以根據 cheat.sh-vim 自行配置
VSCode 和 IDEA 是大家高頻使用的兩個 IDE,和他們整合就很簡單了,只需要安裝相應的外掛:
VSCode 外掛
安裝 vscode-snippet 就可以在 VSCode 中快速使用這個功能了
IDEA 外掛
安裝 idea-cheatsh-plugin 這個外掛就可以在 Intellij IDEA 中使用這個功能了
總結
至於支援的 58 種語言都是什麼,請大家自行參考 README 文件,關於 cheat.sh, 瞭解這些基本的使用就已經夠了,還是那句話,好的工具是用來提高工作效率的,不要被工具過度捆綁
日拱一兵 | 原創