Vimでデュアルgrep

:grepは多用するコマンドのひとつ。

:grep hoge %
:copen

しかし、Quickfixウィンドウは1個しか持てないのが悩みの種。


もう一個開きたい。


もう一個検索したい。


そこで登場するのがロケーションリスト。ただ単に「l」をつければいい。

:lgrep moge %
:lopen

lmakeなんかもあるので、grep結果を消したくない時には役立つかも。


copen,lopenは面倒なので、tips/66 - VimWiki辺りからスクリプトを貰ってこよう。

改造版

tips/99 - VimWikiのアイディアを取り込みつつ、lgrepにも対応してみました。

aug Quickfix
  au!
  au QuickfixCmdPost make,grep,grepadd,vimgrep call <SID>PostQuickfixCmd()
  au QuickfixCmdPost lmake,lgrep,lgrepadd,lvimgrep call <SID>PostLocationCmd()
aug END

function! s:PostQuickfixCmd()
  if len(getqflist()) > 0
    cw
  else
    cclose
  endif
endfunction

function! s:PostLocationCmd()
  if len(getloclist(winnr())) > 0
    lw
  else
    lclose
  endif
endfunction

メモ:getloclist(winnr())と使うみたい。