One possible reason to initiate a search while already on the thing being 
searched it to highlight all occurrences of that thing.
I have '*' mapped to do exactly that, it sets the search to the word under 
the cursor, highlighting all occurrences of that word.
Using 'n' and 'N' then searches as expected.  That search is being done on 
words, not characters.

It looks like '*' is mapped to <Plug>SearchHighlightingStar
if I'm understanding things correctly.

On Monday, January 26, 2026 at 8:02:29 PM UTC-5 Eric Marceau wrote:

> Cristian,
>
> The "n", or "/ + Enter", are simply built-in substitutes for repeating the 
> original search instruction, namely
>
>    -  "/a" 
>
> I am sure that "alias" definition is somewhere in VIM's software tree.  
> The design of the search function is such that it ignores the match 
> starting at the current position. *Otherwise*, the search would never 
> advance to the next instance.
>
> Another way to look at it is
>
>    - You are *already at* the "first match" for what you are searching, 
>    "a".  
>    
>    - If that *is* the case, *why* are you attempting *any* search ... if 
>    not for the *next* match??? 
>
> Honestly, this is simply basic logic ... *and* ... *very* intuitive.
>
> Hope that helps!
>
>
> On 2026-01-22 07:03, Doug Kearns wrote:
>
> On Thu, 22 Jan 2026 at 02:21, Cristian <[email protected]> wrote:
>
>
>
> Thank you for the explanation — that makes sense for the behavior of the n 
> key.
>
> That said, I was wondering whether, for the initial search (the one
> NOT triggered by n), it might also be reasonable for vi to start
> searching from the character currently under the cursor.
>
>
> As others have pointed out, the behaviour is fundamental[1].
>
>
> This could make the behavior a bit more intuitive when the cursor
> is already on a match.
>
>
> I think your intuition is incorrect.  You wouldn't expect 'w', for
> example, not to move to the next word because the cursor was already
> at the start of a word.
>
> You can think of '/' as executing something like :let @/ = 'pattern' | 
> normal! n
>
> The best solution, if you don't want to adjust to how it works, is
> probably to remap '/' to a user function that calls search('pattern',
> 'c') and sets the '@/' register.  Anything else, like :-;/pattern,
> won't work well for multiple matches per line.
>
> Regards,
> Doug
>
> 1. 
> https://pubs.opengroup.org/onlinepubs/9799919799/utilities/vi.html#tag_20_146_13_36
>
>

-- 
-- 
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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/vim_use/ba8bff0b-4f8f-463f-80fb-1094d089818bn%40googlegroups.com.

Reply via email to