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:
This one is a real crowd pleaser. People come for the highlight candy, but they stay for Literal Search.
Searches for "foo" only within the range from lines 7 through 12, both
inclusive. The default range is % (the whole buffer).
Perhaps an example would far better explain this:
Given the line:
With the cursor on that line, the command:
Followed by:
Will produce:
That’s no better than :s/// I know, but with the cursor still on the same line, check it:
Followed by:
Will produce:
Will show the matching lines with all occurrences of "something" on those
lines highlighted.
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.
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.
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
:7,12 RSearch foo |
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:
:g/something/P |
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.
No comments:
Post a Comment