33
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

秀丸を10年使い続けた私が、MacVimでgrepしてみた… 徒然備忘録

Last updated at Posted at 2015-03-10

#前置き
前回、「これから調べること」としてgrepを挙げていました。
でも秀丸のgrepにどっぷりだった私は、なんだかとっつきにくくて「食わず嫌い」な状態でした。

実は、そんな人多いんじゃない?

#とにかく使ってみた
過去ログなんかを漁るのには、grep一択。
「今までなんとなく避けてたけど、使ってみるか…。」
という感じで、まずは基本的なコマンド

:vimgrep {pattern} {file}

:vimgrep shingargle kakoLog*.log
という感じですな。

で、検索結果がでるのですが、
(1 of 55): shingargle って素敵な名前
とかなるわけです。

え?え?一行だけ?
ヒット件数はわかるものの、全体が見渡せない…。
これが、とっつきにくい理由でした。

#次の(前の)検索位置へ
ため息混じりにひとつひとつ確認です。

:cn:次の検索結果へ移動する
:cN:前の検索結果へ移動する:cpでもOK

もう面倒極まりない。

#検索結果一覧表示
世界を席巻するVimmer達が、こんな作業をするはずがない。
と、ちょっと調べる。

:copen

grep直後にこのコマンドですよ。
すると、

:
kakoLog_2015-02-18.log|314 col 28| ....
kakoLog_2015-03-09.log|4 col 28| ....
:

ずらっと検索結果の一覧が別窓で表示されました。
当然、タグジャンプも可能。Vimでも「タグジャンプ」って言うのかは不明だけど。

で、検索し終わって別窓を閉じるときは

:cclose
です。

#ワイルドカード
次に悩んだのが、ディレクトリを再帰的に検索する方法。
ワイルドカードを使用します。

" カレントディレクトリ以下のあらゆるファイルを対象にする
:vimgrep {pattern} **
" Documents/Logs以下のあらゆるファイルを対象にする(ディレクトリを再帰的に検索)
:vimgrep {pattern} Documents/Logs/**
" Documents/Logs/users内のファイルを対象にする
:vimgrep {patter} Documents/Logs/users/*
" Documents/Logs以下のlogファイルを対象にする
:vimgrep {pattern} Documents/Logs/**/*.log
" app/views以下でkakoで始まるlogファイルを対象にする
:vimgrep {pattern} Documents/Logs/**/kako*.log

知ってしまえば、なんてことない。チョロい。

#QuickFixCmdPost というドーピング
使ってると「:copenを打つのも面倒だ。」となるわけです。慣れって怖いですね。
そんなあなたは(私は).vimrcに以下の一文を追記しましょう。

.vimrc
autocmd QuickfixCmdPost * copen

「QuickFix とは、エラー結果や grep の結果が表示される専用のウインドウ領域のこと」
参考:http://www.soum.co.jp/misc/v/vim-no-susume/7.html#id5

ワイルドカードを指定することで「QuickFixが使われたらcopenで自動的に開いてしまえ。」と。
きっとgrepの結果だけじゃなく、色々な場面で活躍してくれることでしょう。

#まとめ
.vimrcに以下の一文を追記

.vimrc
autocmd QuickfixCmdPost * copen

基本コマンドは↓

:vimgrep {pattern} {file}

ワイルドカード

" カレントディレクトリ以下のあらゆるファイルを対象にする
:vim {pattern} **
" Documents/Logs以下のあらゆるファイルを対象にする(ディレクトリを再帰的に検索)
:vim {pattern} Documents/Logs/**
" Documents/Logs/users内のファイルを対象にする
:vim {patter} Documents/Logs/users/*
" Documents/Logs以下のlogファイルを対象にする
:vim {pattern} Documents/Logs/**/*.log
" app/views以下でkakoで始まるlogファイルを対象にする
:vim {pattern} Documents/Logs/**/kako*.log

ここで一句
「技術者は楽するために苦労する」
オソマツ

33
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?