Home > Vim Hacks > Hack #130: :grepをより便利に利用する

Hack #130: :grepをより便利に利用する

問題

Hack #129: 複数のファイルから検索する では:grepについて紹介しました。 色々と便利なコマンドなのですが、頻繁に使っていると次のような不満が出てきます:

:grepの引数は基本的に

:grep {pattern} {file} ...

なのですが、同じファイル郡に対して異なるパターンで:grepする というケースは少なくありません。例えば

:grep rebase *.[ch]

で検索した後で

:grep rebase_cmd *.[ch]

と検索しなおすとしましょう。全てのコマンドを入力しなおすと面倒ですから、 通常は入力履歴を<Up>/<Down>で参照して以前入力した コマンドを修正する形になります。

ここで、入力履歴を手繰るまではよいのですが、 パターンを修正するところが問題です。 修正するためには<Left><Left><Left>...などとしてパターンの箇所まで カーソルを移動しなければならないのですが、これが面倒です。 特に{file} ...の指定が長くなると面倒さが倍増します。 どうにかして簡単に修正することはできないでしょうか。

解決方法

以下の内容をvimrcに追加します:

command! -complete=file -nargs=+ Grep  call s:grep([<f-args>])
function! s:grep(args)
  execute 'vimgrep' '/'.a:args[-1].'/' join(a:args[:-2])
endfunction

これにより:grepの代わりに 以下のような:Grepコマンドが使えるようになります:

:Grep {file} ... {pattern}

:grepでの煩雑さは最初の引数が{pattern}であることが 原因なので、その逆で最後の引数が{pattern}であるコマンドがあれば パターンの修正は<Up><C-w><C-w>...だけで済みます。

参考資料

kana
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #130: :grepをより便利に利用する
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://vim-users.jp/2010/03/hack130/trackback/
Listed below are links to weblogs that reference
Hack #130: :grepをより便利に利用する from Vim-users.jp
trackback from Alone Like a Rhinoceros Horn 10-07-03 (土) 4:49

[vim]Vim の検索/置換系キーマップを晒してみる

一連の Vim Hacks を読んでかなりパワーアップしたので、自分の vimrc から検索/置換系コマンドのキーマップを抜き出して晒してみます。 置換コマンドは eregex.vim のもの(:S)を使ってい…

Home > Vim Hacks > Hack #130: :grepをより便利に利用する

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top