edo1z blog

プログラミングなどに関するブログです

Go - Pecoを使ってみる

Pecoというのを使ってみます。

Pecoのインストール

$ go get github.com/peco/peco
$ cd $GOPATH/src/github.com/peco/peco
$ go build cmd/peco/peco.go
$ mv peco.exe $GOPATH/bin
$ peco --version
peco version v0.5.1

go getの仕組み

go getの仕組みは、git cloneだそうです。$GOPATH/binにexeファイルが入ってますが、srcは、gitリポジトリの内容がそのまま入っていて、フォルダが、github.com/hoge/hoge.gitだとすれば、$GOPATH/src/github.com/hoge/hogeというふうになっております。なので、$GOPATH/src/github.com/hoge/で、git cloneすると同じことがおこると思います。しかし、go getにガチで対応しているものは、go get github.com/hoge/hogeとやるだけで、$GOPATH/binにexeファイルが格納されるので、恐らくgo getというのは、git clone後にgo buildしてその結果を$GOPATH/binに移動させているのではないかと思いました。今度go getにガチで対応しているものとしていないものの違いを調べてみたいと思います。pecoはガチ対応じゃないので、buildして移動したら使えるようになりました。

このやや独特のフォルダ構成に対応したパッケージ管理ツールが、ghqだそうです。ちなみに今、みんなのGOという本を読んでます。ghqとpecoを使うと便利だそうです。この便利さをvim上で実現したいです。

ghqのインストール・設定

go getでexeファイルも作成されました。

$ go get github.com/motemen/ghq

設定

下記のようにgit configにghq.rootを設定します。

$ git config --global ghq.root $GOPATH/src

ghqの使い方

下記のような感じで使います。listでリポジトリのリストが表示されます。getでフォルダ構造を維持しながら、なんのリポジトリでももってこれます。別にここまでして、$GOPATH/srcにGOと無関係のリポジトリまで格納する必要があるのかよく分からないんだけど便利な気もする。

$ ghq list
$ ghq get

ghqからのpeco

$ ghq list -p | peco

これで、リポジトリリストをペコで検索できます。本だと、ここで選んだ結果に対してcdで移動させてました。ただ、これwindows10のgit bashだと使えないっぽくて、コマンドプロンプトだと動きました。ghqはgit bashで使えるけど。peco便利だな。