天天看點

Pet +fzf + glow 打造 CLI 端高效 Wiki背景無盡的需求修改源碼編譯

背景

首先看一下小項目完成之後的成果。

Pet +fzf + glow 打造 CLI 端高效 Wiki背景無盡的需求修改源碼編譯

Pet

配合

glow

之後,可以在指令行輸出

markdown

Pet 是一個指令行

snippet management

小工具。特别的實用。一切都是從它開始。Github 連結。

使用

Pet

少說有 5 年了。它的作用就是将你常用的指令儲存起來,然後你可以添加關鍵詞,最後可以使用

fzf

或者

peco

搜尋關鍵詞來快速提取常用指令,提高效率。

配置和指令都會被儲存到

toml

檔案裡,路徑在

/home/usr/.config/pet/

下。

安裝很簡單,看它的 Github 首頁就行。使用

Pet

必須要安裝

fzf

這裡是一個原始

Pet

的使用截圖。

Pet +fzf + glow 打造 CLI 端高效 Wiki背景無盡的需求修改源碼編譯

你可以使用

<>

将儲存動态的參數,

Pet

可以自動比對這樣的

tag

,然後讓你輸入所需的參數。

Pet +fzf + glow 打造 CLI 端高效 Wiki背景無盡的需求修改源碼編譯

bash

或者是

zsh

,都可以設定一個

alias

Pet

的輸出

pipe

xclip

就能儲存指令,并且它還支援直接執行(

pet exec

)。

無盡的需求

首先我想儲存一些簡單的定義,比如什麼是 TCP/IP 模型;或者是一些步驟類型的記錄,比如如何在 ubuntu 上安裝 docker-compose。諸如此類,我就不需要每次浏覽網頁,再開始操作了。簡單高效很多。

問題是,原生 Pet 隻能儲存沒有換行符(

\n

)的指令。意味着所有的指令或者記錄必須在一行,稍長的記錄在之後閱讀起來就不是那麼清晰,特别是步驟類型的。

我想了一下,需求的是可以在

pet new

的時候鍵入多行指令,并且可以使用 markdown,最後還需要在指令行直接輸出 markdown,使整個流程做到最簡化,并且還有很好的格式,閱讀清晰。

修改源碼

Pet 的源碼也是很久沒有維護了。為了我的需求,改起來。修改之後的源碼在這裡。

整個過程搞得我對 GO 其實沒有什麼好感了,可能是系統原因(FreeBSD),按照 Pet 官方的步驟編譯的話,第一步就會出錯,最後花了一天時間整了自己的編譯流程,算是大功告成了。

這是完成之後的

pet new

指令,支援多行輸入。就像在指令行一樣,使用

\

來換行。

Pet +fzf + glow 打造 CLI 端高效 Wiki背景無盡的需求修改源碼編譯

另外,也可以有簡單的 markdown。

比如标題,行間代碼,或者是表格。

Pet +fzf + glow 打造 CLI 端高效 Wiki背景無盡的需求修改源碼編譯
注意,要使用 markdown,記住第一行輸入必須以标題(

#

)開頭,以及每行最後都是用

\

續行就行。

這裡的 markdown CLI 輸入,要用到第二個小工具,

glow

Github 連結。

這個工具可以在指令行渲染 markdown,很好滿足了我的需求。它的功能很多,具體見 Github。

另外,隻要是

chrome

或者是

firefox

開頭的指令,會直接執行。一些有用的工具類網站,直接儲存在 Pet,然後在指令行搜尋一下就能直接打開了。

編譯

由于

knqyf263

(Pet 作者)的源碼已經年久失修,

gitlab

子產品已經更新,我按照報錯修改了

gitlab.go

,但是未測試。

官方使用 Makefile 的編譯是會出錯的,至少我的系統上是這樣。是以我把我的編譯方式寫出來,如果大家無法使用官方的方式編譯,那麼就參考我這裡的方法。

注意,編譯前提是有梯子。

# 不同類型的 proxy 自行修改
export https_proxy=proto://ip:addr
# 下載下傳 go 1.14.1,測試通過的版本,版本不能更低(cobra command要求),但是高版本未測試
tar xvf go.tar -C /usr/local
export GOROOT=/usr/local/go/bin
export PATH=$PATH:$GOROOT
export GOPATH=/home/<username>/goprojs
mkdir -p $GOPATH/src/github.com/knqyf263
cd $GOPATH/src/github.com/knqyf263
git clone https://github.com/xillemi/pet.git
mkdir $GOPATH/bin
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep init
dep ensure -vendor-only
go mod vendor
# 二進制會安裝到 $GOPATH/bin 目錄
go install
           

有任何問題,歡迎私信。

最後,在

bashrc

或者

zshrc

中定義一個方法,來簡化指令。

pets () {
        cmd=`pet search`
        # 如果指令是 # 開頭,也就是 markdown 标題開頭
        # 會被 pipe 給 glow 顯示在 terminal
        # 其他的指令,會直接複制到剪切闆,複制使用即可
        if [[ "$cmd" == "#"* ]]
        then
        		# !!!不要省略雙引号噢,否則換行符都會被 strip 掉
        		# !!! markdown 表格就不能正常顯示了
                echo "$cmd" | glow -
        else
                echo "$cmd" | xclip -sel clip
        fi
}

source ~/.bashrc
source ~/.zshrc
           

使用

pets

指令來高效工作吧。