Ad blocker interference detected!
Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers
Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.
created 2008 · complexity basic · author Niels AdB · version 7.0
You may want to list all lines in the current buffer that match a pattern, for example, list all lines containing "Warning". The following script copies all matching lines to a scratch (temporary) buffer. You can then examine the list, or save it to a file.
Create a file called (for example) filter.vim containing:
" Gather search hits, and display in a new scratch buffer. function! Gather(pattern) if !empty(a:pattern) let save_cursor = getpos(".") let orig_ft = &ft " append search hits to results list let results =  execute "g/" . a:pattern . "/call add(results, getline('.'))" call setpos('.', save_cursor) if !empty(results) " put list in new scratch buffer new setlocal buftype=nofile bufhidden=hide noswapfile execute "setlocal filetype=".orig_ft call append(1, results) 1d " delete initial blank line endif endif endfunction " Delete the current buffer if it is a scratch buffer (any changes are lost). function! CloseScratch() if &buftype == "nofile" && &bufhidden == "hide" && !&swapfile " this is a scratch buffer bdelete return 1 endif return 0 endfunction nnoremap <silent> <Leader>f :call Gather(input("Search for: "))<CR> nnoremap <silent> <Leader>F :call Gather(@/)<CR> nnoremap <silent> <Esc> :call CloseScratch()<CR>
In Vim, the command
:source filter.vim will execute the script.
Assuming the default leader key (backslash), you can now:
\fand enter a pattern when prompted.
\Fto filter on the last search pattern.
- Press Escape to close the scratch buffer listing the search hits.
For example, you could put the cursor on a word and press
* to search for the next occurrence of that word. If you now type
\F a new window will open with a list of all lines that contain the word you searched for. Press Escape to close the window.
A simple procedure to list all lines matching a pattern is:
" Print all lines that contain "pattern". :g/pattern/p " Following is equivalent. :g/pattern
The following will delete all lines that do not contain a pattern, leaving only the search hits. You could then press
u to undo the changes.
- Folding with Regular Expression to fold away lines without a search pattern rather than modifying it or using a scratch buffer
- Search_for_lines_not_containing_pattern_and_other_helpful_searches#Using_the_:v_command for some simple techniques to display lines of interest
- Copy the search results into clipboard to copy matching patterns (not lines)
- Redirect g search output uses
g//pfor a limited one-line version of this tip
- List lines with current search pattern highlighted defines command
PPto highlight matches displayed with