Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

git + peco + Vim — git grep でマッチしたファイルを選んでVim で編集する

$
0
0

イメージ

  • echoという文字列があるファイルを git grepする
  • 12行目でマッチしているファイルを選ぶ

image

  • Vimで12行目から編集開始できる

image

ポイント

  • $EDITORの環境変数で利用するエディタを決める
  • git grep --line-numberオプションを使って、git grepで引っかかった行を読み込むようにする ( Vim を使う場合 )
  • git grep の結果からファイルパスをパースする
  • peco を使ってインクリメンタル検索をする

スクリプト例

#!/usr/bin/env bash -eu# Usage## $ command [grep-keyword] --some-grep-option# 利用するエディタを環境変数から決めるreadonly editor=${EDITOR:-vim}# peco が入っていなければ終了するif[!$(which peco)];then
  echo You need peco please install
  exit
fi# git grep する# git grep には自由なオプションを渡せるようにしておく ( --line-number をのぞいて )readonly git_grep_result=$(git grep--line-number$@)# git grep のマッチ結果がなければ終了するif[-z"$git_grep_result"];then
  echo No match with git grep
  exit
fi# git grep の結果からpecoで検索モードに入るreadonly git_grep_select=$(echo"$git_grep_result" | peco --query="$1")# peco での選択結果がなければ終了するif[-z"$git_grep_select"];then
  exit
fi# pecoで選んだ行からファイルパスをパースするreadonly filepath=$(echo"$git_grep_select" | awk-F':''{ print $1 }')# git grep の結果からファイルの行番号をパースするreadonly line_number=$(echo"$git_grep_select" | awk-F':''{ print $2 }')if[!-z"$filepath"];then# エディタが Vim なら 引っかかったファイル行番号から開くようにするif[["$editor"=~ vim ]]&&[!-z"$line_number"];then
    eval"$editor" +"$line_number""$filepath"else
    eval"$editor""$filepath"fi
fi

gitim/git-grep-edit at acdbbf9bcbfd92e10d62be3f92bff5e6e5b0366e · YumaInaura/gitim

Versions

  • git version 2.8.1
  • peco version v0.5.3 (built with go1.10)
  • bash 4.2
  • Mac OS High Sierra

Links


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>