天天看点

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

命令来高效工作吧。