Skip to content
Search context in Vim in a sidebar using `ag` output
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ftdetect
plugin
syntax
LICENSE
README.md
side-search-demo.gif

README.md

Overview

The quickfix window is great, but it would be nice to get some context around our searches. This plugin adds ag output to a side buffer with quick navigation mappings using comfortable Vim conventions.

Simple Demo

Features

  • step through ag output instead of quickfix output
  • syntax highlighting of ag output
  • mappable to search current word under cursor
  • configurable g:side_search_prg similar to grepprg
  • vertical or horizontal split output via g:side_search_splitter

Buffer Mappings

n/N             - Cursor to next/prev
<C-n>/<C-p>     - Open next/prev
<CR>|<DblClick> - Open at cursor
<C-w><CR>       - Open and jump to window
qf              - :grep! to Quickfix

Prerequisites

We rely on The Silver Searcher to perform our file/text searches for us. Theoretically any program which has the same output could also work, but that we only test using ag output.

To install ag command on OSX:

brew install the_silver_searcher

For refer to The Silver Searcher for more instructions.

Global Configuration

" How should we execute the search?
" --heading and --stats are required!
let g:side_search_prg = 'ag --word-regexp'
  \. " --ignore='*.js.map'"
  \. " --heading --stats -B 1 -A 4"

" Can use `vnew` or `new`
let g:side_search_splitter = 'vnew'

" I like 40% splits, change it if you don't
let g:side_search_split_pct = 0.4

Suggested Mapping

" SideSearch current word and return to original window
nnoremap <Leader>ss :SideSearch <C-r><C-w><CR> | wincmd p

" Create an shorter `SS` command
command! -complete=file -nargs=+ SS execute 'SideSearch <args>'

" or command abbreviation
cabbrev SS SideSearch

FAQ

How to search for multi-word terms?

Surround terms with double quotes

:SideSearch "cats and dogs"

How to pass extra args to ag?

Just do it :)

:SideSearch --js MyAwesomeComponent
You can’t perform that action at this time.