54
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

zshにpeco + ghqを導入したメモ

流行りからだいぶ遅れた感あるが、peco + ghqをMacに導入したのでメモっとく。

インストール

homebrewでインストール。

$ brew tap peco/peco
$ brew install peco

$ brew tap motemen/ghq
$ brew install ghq

設定

GOPATH

$HOMEに設定してある。

~/.zshrc
export GOPATH=/User/Yusuke

go getしたら~/src以下にライブラリとか入ってく。

ghqのパス設定

GOPATHと揃える。

$ git config --global ghq.root ~/src
~/.gitconfig
[ghq]
  root = /Users/Yusuke/src

これで、ghq get <Githubのレポジトリ>で、~/src/github.com/以下にレポジトリがクローンされる。
例えば、ghq get https://github.com/rails/railsをすると、~/src/github.com/rails/rails/という感じでディレクトリができる。

pecoを使ったコマンド

コマンド履歴を出して検索・絞り込みするやつ

~/.oh-my-zsh/custom/my.zsh
setopt hist_ignore_all_dups

function peco_select_history() {
  local 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 clear-screen
}
zle -N peco_select_history
bindkey '^r' peco_select_history

これで、Ctrl + rでコマンド履歴の補完候補がズラッと出る。インクリメンタルサーチ可能。1行目は同じコマンドを出さない設定。

ghqでクローンしてきたレポジトリへの移動が捗るやつ

ghq listで、ghqでクローンしてきたレポジトリのパスが一覧で出る。これをパイプでpecoに渡すと、レポジトリ名でインクリメンタルサーチできるので利用。

~/.oh-my-zsh/custom/my.zsh
function peco-src () {
  local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
  if [ -n "$selected_dir" ]; then
    BUFFER="cd ${selected_dir}"
    zle accept-line
  fi
  zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src

Ctrl + ]でghq管理下のレポジトリの補完候補が出るので、選択すれば一発で飛べる。

設定ファイルが汚くなるので、peco関連の設定はまとめて別ファイルに移すのが良さげ。。

pecoのキーマップ

~/.config/peco/config.jsonにキーマップやstyleの設定を書いておける。

~/.config/peco/config.json
{
  "Keymap": {
    "M-v": "peco.ScrollPageUp",
    "C-v": "peco.ScrollPageDown"
  },
  "Style": {
    "Selected": ["underline", "on_green", "black"],
    "Query": ["red", "underline"]
  }
}

おわり

そういうわけで、レポジトリの管理は~/src以下で行うことにしてみました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
54
Help us understand the problem. What are the problem?