GHQ+peco
僕のソース管理術
pecoってなに?
- 行をインクリメントサーチして、結果を返す
- CLI
- Goで作られてる
- percolの亜種
えっ?なにがいいのそれ?
利点が文章では伝わりにくいので
peco install
ここからダウンロードできる
Releases · peco/peco https://github.com/peco/peco/releases
# mac
% brew install peco
# 他
% cd /usr/local/src
% wget https://github.com/peco/peco/releases/download/v0.3.3/peco_linux_amd64.tar.gz
% tar -C /usr/local/bin -xzf peco_linux_amd64.tar.gz
例) % ls -al
| peco
絞込みながら、ファイル一覧が見て取れる
応用例: history search
とりあえず、.bashrcにコピペ
『 bind '^r'』= Ctrl-R
% cat >> .bashrc
function peco-select-history() {
typeset tac
if which tac > /dev/null; then
tac=tac
else
tac='tail -r'
fi
BUFFER=$(fc -l -n 1 | eval $tac | peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle redisplay
}
zle -N peco-select-history
bindkey '^r' peco-select-history
うろ覚えなコマンドとか探すの便利!!
これは、life-changing!
応用例: ファイル検索
vimで階層の深いファイル開きたい時とか便利!
GHQ
GHQってなに?
ソース管理ツールです!!
その前にGoのお作法
## コードのチェックアウト方法
% go get github.com/motemen/ghq
$GOPATH
|-- src/
| `-- github.com/
| `-- motemen/
| `-- ghq/
|-- bin/
`-- ghq
ファイル管理体型
% export $GOPATH=$HOME
- 自分は、go getですべてのソースを$GOPATH/srcに 集約管理してます
- $GOPATH/src/domain/user/reposname
- github.com/motemen/ghq
- stash.example.com/awesome-app/awesome-app
ここでGHQの設定
cat >> ~/.gitconfig
[ghq]
root = ~/src
GHQコマンド
すると、~src/に並んでいるリポジトリリストが!
% ghq list | head
bitbucket.org/mprasil/docker_dokuwiki
ghe.exmaple.com/awesome_tool/awesome_api.git
ghe.exmaple.com/awesome_tool/awesome_batch.git
ghe.exmaple.com/awesome_tool/awesome_core.git
ghe.exmaple.com/awesome_tool/awesome_filter.git
ghe.exmaple.com/awesome_tool/awesome_flume.git
GHQ list [query]
検索も可
% ghq list awesome
ghe.exmaple.com/awesome_tool/awesome_api.git
ghe.exmaple.com/awesome_tool/awesome_batch.git
ghe.exmaple.com/awesome_tool/awesome_core.git
ghe.exmaple.com/awesome_tool/awesome_filter.git
ghe.exmaple.com/awesome_tool/awesome_flume.git
GHQ+pecoの設定をzshrcへ
cat >> ~/.zshrc
function peco-src () {
local selected_dir=$(ghq list --full-path | peco --query "$LBUFFER")
if [ -n "$selected_dir" ]; then
BUFFER="cd ${selected_dir}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-src
bindkey '^T' peco-src