Sunday, January 23, 2011

Two search patterns

Per the help at

:help last-pattern
"""
Note that two patterns are remembered: One for 'normal'
search commands and one for the substitute command ":s".
Each time an empty pattern is given, the previously used
pattern is used.
"""


There seems to be a peculiarly unidirectional defaulting:

Case #1:

Start Vim (-u NONE) on a document
Search for a pattern with "/"

/pattern

perform an empty substitute:

:%s//whatever/g

A blank :s pattern reaches for the most recent "/" pattern.
Nice, I use this regularly.


Case #2:

Start Vim (-u NONE) on a document
Perform a replacement (either a null-op, or just the
first-in-a-line with further matches later in the line, or a
replacement that allows for the pattern to be found again)

:%s/pattern/&

Hit "n" to find the next instance of the pattern or use "/" with
an empty pattern. I get

E35: No previous regular expression

A blank search *doesn't* reach into the most recent ":s" pattern.
I reach for this occasionally and get stung by it every time.

However, if I do a

:%s//whatever

it manages to find that pattern. Likewise if I ":echo @/" it
correctly returns my :s pattern that I want to use for my n/N
command (or "/" with no regexp).


It seems a little inconsistent to find the search pattern in the
first case, but to not find the pattern in the second case.


Is this a Vim bug (calling for n/N to use the search register), a
documentation bug (at a minimum requiring clarification), or just
a "suck it up and deal with the oddity" situation?

-tim


--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments: