vimのメモ;vimgrepその2
これの続き.
sktakefumi.hatenablog.com
せっかくGitのgrepがあるなら 以前見送った外部grepでも導入しようと考えた.
のだが いろいろあってvimgrepのままでいいかなって.
(いろいろというのは 普通に
:grep pattern **/*.f90 | cw
とかやると quickfixが開く前にvimの下部に検索結果が流れるのが嫌だったから.
これを回避するためには
:silent grep pattern **/*.f90 | cw
とするらしいが イイ感じに地のgrepにオーバーラップ(?)するやり方がわからなかった.
自分で新しいコマンドを作る方法はアリ.
quickfix - Vim日本語ドキュメント)
もののついでにvimrcをいじってvimgrepをカスタマイズした.
augroup common autocmd! " grep autocmd QuickfixCmdPre vimgrep setlocal wildignore=*.o,*.mod,*.exe,*.png,*.jpg,*.pdf autocmd QuickfixCmdPost vimgrep setlocal wildignore= autocmd QuickfixCmdPost *grep* cwindow augroup END
バイナリファイルを検索対象から外し かつquickfixウィンドウを自動で開くようにした.
zashikiro.hateblo.jp
qiita.com
環境設定にこだわってないでいい加減作業しましょうね
PowerShellをいじった; grep
PowerShelでgrepコマンドを使うことを考える.
まず grepぽい標準のコマンドでSelect-Stringがあるらしい.
tech.sanwasystem.com
まったく問題なく使える.
そこでやはりとちくるってGit for Windowsのgrepを使おうとする.ほんとバカ.
一番簡単なのはC:\Program Files\Git\usr\binにPathを通してしまうことであろうが(いつもの悪い癖) コマンドの衝突が起きそうで怖い.例えばlsなんかは普通にぶつかる.
そこで今回はprofile.ps1にエイリアスを追加することを考える.
Set-Alias grep 'C:\Program Files\Git\usr\bin\grep.exe'
こんな感じで普通に動く.
ところで grepは-nで行番号を表示したり --colorオプションで出力結果に色付けを行うことができるらしい.これをデフォルトにしたいと思ったので 次のようにしてみるが
Set-Alias grep 'C:\Program Files\Git\usr\bin\grep.exe --color'
これはダメらしいです.悲しい.
回避策としては 自前で関数を用意してしまうこと.
いろいろ悪態をついたのち 次のようなものに落ち着いた.
function Git-Grep{ Invoke-Expression "& 'C:\Program Files\Git\usr\bin\grep.exe' -n --color $Args" } Set-Alias grep Git-Grep
Invoke-Expressionで 与えた文字列をそのままコマンドとして実行してくれる.
結果はこんな感じ.
うっかり検索先パスを指定し忘れると/usr/bin/grepを検索し始めるのが玉に瑕.
いやほんとおとなしくほかのシェル使えって話ですよね.私ってほんとバカ....
Git for Windowsでの日本語文字化けについて
ググれば腐るほど出てくる.
とりあえず,.gitconfigで
pager = less -cq
quotepath = false
を指定してあげる.pagerを明示的に指定してあげるのが大事らしい.
-qはついでにビープ音の無音化.
以上の処理を行ったものの git logの文字化けが直らないので もちょっと調べると
Git for Windows で漢字等非ASCII文字が文字化けする場合 | OPC Diary
が見つかったので とりあえずシステム環境変数に
LANG ja_JP.UTF-8
を追加.とりあえずシステム環境変数にぶち込んでしまう悪い癖.
結果 直った.
さて 備忘録としてブログに書き起こそうかと思って よくよく検証してみると git logのほうはLANG環境変数がキーで pagerの明示的な指定は特に意味がなかった.
git ls-filesはquotepathが効いてくる.
なんやねん.
文字コード周りの話が分からないので助けてください.