cheat.sh在手,天下我有

日拱一兵發表於2020-11-30

前言

作為程式設計師需要了解的東西有很多,日常編碼和寫指令碼脫離不開各式語言與 Linux 命令。為了記住一些雜亂的或不被經常使用的知識點,我們迫切需要一個“小抄”/備忘錄,小抄內容多了自然繁雜,所以我們希望這個小抄要:

  1. 簡潔:只包含你想要的內容,沒有其他「花邊」內容
  2. 快速:可以立即使用
  3. 全面:能基本包含你所有問題的答案
  4. 通用:它應該在任何地方、任何時間都可用,不需要任何準備
  5. 不唐突:它不應該讓你從主要任務上分心(比如減少應用切換)
  6. 輔導:它應該幫助你學習這個科目(在答案基礎上擴充套件知識)
  7. 不顯眼:應該可以在完全不被注意的情況下使用(就好比劃詞翻譯,滑鼠輕點就有答案)

老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 同樣和主流編輯器有很好的整合:

FeatureEmacsSublimeVimVSCodeIDEAQtCreator
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, 瞭解這些基本的使用就已經夠了,還是那句話,好的工具是用來提高工作效率的,不要被工具過度捆綁
日拱一兵 | 原創

相關文章