Enhanced searches, highlights and matches for Vim
Raimondi and I wrote a nifty little plugin and,
well, we’d like to invite you to join the
SearchParty.
SearchParty has these awesome features:
Visual Searches
-
* Searches for the next occurrence of the currently selected visual text.
-
# Searches for the prior occurrence of the currently selected visual text.
-
& Starts a :substitute using the currently selected visual text.
I’ve had a goodly amount of
<3 on
#vim for the visual
& command.
Literal Search
<leader>/ prompts for a literal string to search for. This does
NOT use a
regular expression, so the characters you type here will be searched for
literally without any magic interpretation. The
<Up> key scrolls through the
prior literal search history.
This one is a real crowd pleaser. People come for the highlight candy,
but they stay for
Literal Search.
Ranged Search
Searches for "foo" only within the range from lines 7 through 12, both
inclusive. The default range is
% (the whole buffer).
|
The normal next and previous keys (n and N) cycle within the range. |
Multiple Replacements
<leader>mp prompts for a Search term and then prompts for space separated
Replacement terms (use
\\ to escape desired spaces). The current line is
then duplicated as many times as there are replacements, minus one, and the
Search term is then replaced on each line with each successive Replacement.
Perhaps an example would far better explain this:
Given the line:
Don't credit it on the sunshine
With the cursor on that line, the command:
<leader>mp
Followed by:
Search:credit
Replace:blame
Will produce:
Don't blame it on the sunshine
That’s no better than
:s/// I know, but with the cursor still on the same
line, check it:
<leader>mp
Followed by:
Search:sunshine
Replace:moonlight good\ times
Will produce:
Don't blame it on the sunshine
Don't blame it on the moonlight
Don't blame it on the good times
|
Blaming it on the boogie is left as an exercise for the reader. |
Search Highlighting
IIRC, this is where SearchParty all began — the ability to easily highlight
the word under the cursor without silly machinations like:
*#
-
<C-L> Temporarily clears search highlight.
-
<C-BSlash> Toggles search highlighting.
-
<leader>* Highlights all occurrences of word under the cursor.
-
<leader>mah Toggle automatic highlight of all occurrences of word under cursor.
-
<leader>g* Highlights all occurrences of WORD under the cursor.
|
You might think that <leader>mah is a bit verbose but toggling
automatic word highlighting is not something I think you’ll need to do very
often. If it does bother you, though, this mapping and all of the mappings in
SearchParty are <Plug> maps, so you can customise them to your own tastes.
Instructions for doing so are in the plugin docs. |
Highlighting Print Command
Modern
grep commands highlight the search term within the resulting lines (if
you so desire). With SearchParty, Vim’s
:g// command does too now:
Will show the matching lines with all occurrences of "something" on those
lines highlighted.
|
This command can also be used for an arbitrary range and it will highlight
the most recent search pattern (@/) within those lines. E.g.:
|
Set Search
Sometimes you’d like to highlight
that word over there without having to go
there, use
<leader>* on it, and come back.
<leader>ms is the answer.
Matches
This is one of my personal favourites — the ability to have up to six
different strings highlighted in big, bold, bright colours all across the
screen wherever they appear. The
<leader>mm command prompts you for a
string (kindly inserting the current
word for you) to highlight. If you
go past six then the first one is forgotten and replaced with your latest
string (cycling like this ad infinitum). I find this useful for ensuring that a
few particularly important strings don’t escape my attention throughout a
document.
M.A.S.H.
Lastly, we have the Motion Activated Search Highlighter: when you press
n/N/#/*/g#/g*, it highlights the match under the cursor differently to
all the other matches on screen (if you have
:set hlsearch activated). If
you don’t use
hlsearch, then it will still highlight the current match.
I
really like this feature. I used to find it difficult to see where my
cursor was when it was within a highlighted search term — the other similarly
highlighted blobs would all compete for my attention. M.A.S.H makes this a
no-brainer now.
SearchParty
So, welcome to the party. Grab yourself a buffer and get highlighting, make
some matches or MASH out on the lounge. Enjoy your evening.