notepad++ で文字列を検索すると、新しいウィンドウが開き、検索結果が表示されます。この機能をvimで使いたいです。グーグルで調べた後、いくつかの提案が見つかりました:
vimgrep /<pattern>/ %
copen
これら 2 つのコマンドを実行するマッピングを作成することができます。パターンは現在の単語である必要があります: vim の cword キーワードである可能性がありますか?
notepad++ で文字列を検索すると、新しいウィンドウが開き、検索結果が表示されます。この機能をvimで使いたいです。グーグルで調べた後、いくつかの提案が見つかりました:
vimgrep /<pattern>/ %
copen
これら 2 つのコマンドを実行するマッピングを作成することができます。パターンは現在の単語である必要があります: vim の cword キーワードである可能性がありますか?
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
等
要件は実際には簡単です。ただし、ユーザーが入力したパターンを取得するには、関数が必要です。
function! FindAll()
call inputsave()
let p = input('Enter pattern:')
call inputrestore()
execute 'vimgrep "'.p.'" % |copen'
endfunction
マッピングが必要な場合は、次の行を追加します。
nnoremap <F8> :call FindAll()<cr>
しかし、私があなたの質問の下でコメントしたように。%
名前のないバッファでは機能しない場合があります。