2009-08-05 6 views
11

vimでgrep検索をgrepで実行した後、ファイルのリストが表示されます。それらのファイルの1つを選択し、その特定の行の新しいタブで開く方法はありますか?あなたはファイルのリストを取得した場合vimでgrepから結果ファイルを選択

答えて

11

grepを呼び出した後、quickfix/errorウィンドウを開く必要があります。

:copen 

私はgrepを使うたびに私のためにそれを作るスクリプトがあります。

+1

ファイルをその特定の行の新しいタブでどのように開いていますか? – Amjith

1

あなたはより多くの情報について

:cn 
:colder 

を経由して、ツリー状に

:help grep 

それらを参照し、エントリの一番下までスクロールすることができます

12

ちょうど完全性、など:copenコマンドのために、また、唯一のエントリは(あなたのgrepは何の結果を持っていない場合ので、それは表示されません)がある場合は、「クイックフィックス」ウィンドウが開きます:cw、があります。

私は、ファイルを新しいタブで開く作る(マッピングを定義せずに)最も簡単な方法がすることだと思う:

:cw    " Open the quickfix window 
Ctrl-W T   " Switch the window into a new tab 
<ENTER>   " Open the file/line 

また、あなたができる:

:cw    " Open the quick fix window 
Ctrl-W <ENTER>  " Open the file/line in a new window 
Ctrl-W T   " Move the new window to a new tab 

場合クイックフィックスウインドウに入ったり出たりするときにマッピングを作成して削除するには、デフォルトでBufEnterBufLeaveの自動作成を使用することができます。しかし、これはおそらく些細なことではありません。

:help :cw 
:help :copen 
:help quickfix 
1

非常によく似た質問に対する回答を探しています。上記の答えは正しいものの、QuickFixウィンドウ内のすべてのファイルを一度に開くための便利な方法をバッファまたはタブのいずれかに記述できませんでした。

あり、それを行うには、コマンドに建てられているように見えるが、それはVIMプラグインなど些細だしません...誰かがそれは、コードの12行(1つの機能)ですここ http://pastebin.com/J9RwciFQ

をやってくれました。分析中にクリックを保存するためにここに貼り付けられます。あなたがこれを実装しようとしている場合pastebinのリンクに従ってください...私のプラグインは、病原体のディレクトリにインストールされ、私は元のプラグインを少し修正した(コードの後の詳細)。

~/.v/b/v/p/quickfixopenall.vim 
" Create command 
command! QuickFixOpenAll :call StartQuickFixOpenAll() 

function! StartQuickFixOpenAll() 
    if empty(getqflist()) 
     return 
    endif 
    let s:prev_val = "" 
    for d in getqflist() 
     let s:curr_val = bufname(d.bufnr) 
     if (s:curr_val != s:prev_val) 
      exec "edit " . s:curr_val 
     endif 
     let s:prev_val = s:curr_val 
    endfor 
endfunction 

私はgrepの結果を持っていたら、だから私は満足してい...プラグイン機能があります。QuickFixOpenAllを与えられるように...私はプラグインを変更する必要がありました(quickfixplugin.vimに次の行を追加しました)。そして、私はあなたが開いているバッファとしてgrepの結果のすべてのファイルを持っている...あなたは、このような/見つけるあなたは接頭辞ができ置き換えるなどの任意commeon操作を実行したい場合は、自分の与えられた関数のStartQuickFixOpenAll ...

" Create command 
command! QuickFixOpenAll :call StartQuickFixOpenAll() 

と改名しましたあなたのコマンドをすべて実行する "bufdo"コマンドを使用した通常のコマンド...VIMタイプの "help bufdo"

タブを使いたくない場合は、このプラグインをかなり簡単に修正することができます... commaned "edit"を使用します...単に "tabe"と置き換えてQuickFixOpenAllが開きます結果タブを新しいタブに追加します。

関連する問題