4

notepad++ で文字列を検索すると、新しいウィンドウが開き、検索結果が表示されます。この機能をvimで使いたいです。グーグルで調べた後、いくつかの提案が見つかりました:

vimgrep /<pattern>/ %
copen

これら 2 つのコマンドを実行するマッピングを作成することができます。パターンは現在の単語である必要があります: vim の cword キーワードである可能性がありますか?

4

3 に答える 3

4

lvimgrep をお勧めします (:make に quickfix を使用できるようにします)

:nnoremap <F6> :lvimgrep /\M\<<C-R><C-W>\m\>/ **/*.[ch]pp **/Makefile | lopen<CR>

また、現在のファイルで検索したいだけの場合:

:g/<pattern>/

一致する各行で 'print' (デフォルト コマンド) を呼び出します。

:v//               " non-matching lines
:g//-1             " lines preceding the matching line
:g//-1,+1          " lines around the matching line

:global の方がはるかに便利です:

 :g/foo/ join       " join all lines containing foo

于 2013-04-09T15:31:34.143 に答える
3

要件は実際には簡単です。ただし、ユーザーが入力したパターンを取得するには、関数が必要です。

function! FindAll()
    call inputsave()
    let p = input('Enter pattern:')
    call inputrestore()
    execute 'vimgrep "'.p.'" % |copen'
endfunction

マッピングが必要な場合は、次の行を追加します。

nnoremap <F8> :call FindAll()<cr>

しかし、私があなたの質問の下でコメントしたように。%名前のないバッファでは機能しない場合があります。

于 2013-04-09T15:48:39.763 に答える