How about using ':grep' when searching through the entire file?

 

 

function! Grep(pattern)

    exe 'grep ' . a:pattern

    let @/ = substitute(a:pattern, '/\(.*\)/.*$', '\1', '')

    copen

endfunction

command! -nargs=+   Grep    call Grep(<q-args>) | set hls

 

cnoreabbrev   grep
Grep<Space>//<Space>%<C-Left><C-Left><Right><C-r>=Eatchar('\s')<CR>

 

(for Eatchar(), :helpgrep Eatchar )

 

 

I prefer Quickfix list more than ':print' output. Just personal preference
:)

 

 

From: [email protected] [mailto:[email protected]] On Behalf
Of Barry Arthur
Sent: Friday, March 22, 2013 6:54 AM
To: [email protected]
Subject: Re: Suggestion: Highlight the search pattern in :g/.../# or
:g/.../p

 

The final version I added to SearchParty:

 

function! PrintWithHighlighting() range

  let lnum = a:firstline

  let lnum_len = len(line('$'))

  for line in getline(a:firstline, a:lastline)

    echohl LineNr

    echon printf("%*s ", lnum_len, lnum)

    echohl none

    let lnum += 1

 

    let ms = match(line, @/)

    let me = matchend(line, @/)

    while ms != -1

      echohl none

      echon strpart(line, 0, ms)

      echohl Search

      echon strpart(line, ms, me - ms)

      echohl none

      let line = strpart(line, me)

      let ms = match(line, @/)

      let me = matchend(line, @/)

    endwhile

    echon line . "\n"

  endfor

endfunction

 

command! -range P <line1>,<line2>call PrintWithHighlighting()

 

 

On 22 March 2013 02:12, Axel Bender <[email protected]> wrote:

Thanks all!

Based on your input my final version (taking into account vim's number
setting):

command! -nargs=? P :call PrintHighlighted(<q-args>)

function! PrintHighlighted(arg)
   echo ""

   if a:arg == "#" || &number
      let l:lnum = line(".")

      echohl LineNr
      echon " " . repeat(" ", len(line("$")) - strlen(l:lnum)) . l:lnum . "
"
      echohl NONE
   endif

   let l:line = getline(".")
   let l:pos  = 0

   while 1
      let l:ms = match(l:line, @/, l:pos)

      if l:ms == -1
         echon strpart(l:line, l:pos)
         return
      endif

      echon strpart(l:line, l:pos, l:ms - l:pos)

      let l:me = matchend(l:line, @/, l:pos)

      echohl MarkerBlue
      echon strpart(l:line, l:ms, l:me - l:ms)
      echohl NONE

      if l:pos == l:me
         echon strpart(l:line, l:me)
         return
      endif

      let l:pos = l:me
   endwhile
endfunction


--
--
You received this message from the "vim_dev" 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 a topic in the
Google Groups "vim_dev" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/vim_dev/V2vGo2CcHqU/unsubscribe?hl=en.
To unsubscribe from this group and all its topics, send an email to
[email protected]
<mailto:vim_dev%[email protected]> .
For more options, visit https://groups.google.com/groups/opt_out.



 

-- 
-- 
You received this message from the "vim_dev" 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_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.
 
 

-- 
-- 
You received this message from the "vim_dev" 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_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Raspunde prin e-mail lui