Tuesday, January 27, 2026

Re: Search first character in a file

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 <cristia...@gmail.com> 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 vim_use+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/vim_use/ba8bff0b-4f8f-463f-80fb-1094d089818bn%40googlegroups.com.

No comments: