Justin M. Keyes wrote:

> On Mon, Aug 22, 2016 at 2:29 PM, Bram Moolenaar <b...@moolenaar.net> wrote:
> >
> > David Fishburn wrote:
> >
> >> On Sat, Aug 20, 2016 at 12:37 PM, Bram Moolenaar <b...@moolenaar.net> 
> >> wrote:
> >>
> >> >
> >> > Patch 7.4.2231
> >> > Problem:    ":oldfiles" output is a very long list.
> >> > Solution:   Add a pattern argument. (Coot, closes #575)
> >> >
> >> >
> >> I was wondering if something similar to this could be added to the :let
> >> command (though it has a lot of permutations).
> >>
> >> I can do the following:
> >>     :let g:
> >>
> >> I would love to do the following:
> >>     :let g:loaded_db\w\+
> >>
> >> And return only those matching variables.
> >
> > Are we going to get this request for any command with a long output
> > list?
> >
> > Perhaps we better add a generic way to filter the output.  Unfortunately
> > we can't use "command | grep /pattern/".  Not all commands accept
> > another command following.  We could put it in front:
> >
> >         filter /pattern/ command
> >
> > It's like a command modifier then.  But one with an argument.
> > Note that the filtering would happen line-by-line, thus if there is an
> > item that takes several lines only matching ones would show up.
> 
> Why not use the conventions already built-in to Vim, i.e., ":global"?
> If :read was enhanced to take a colon-prefixed Vim command:
> 
>     :read :let
>     :g!/foo/d
> 
> all of these requests would be satisfied implicitly, as well as fix a
> long-standing omission of :read. And it also re-uses existing Vim
> concepts (":global" + buffer manipulation) instead of inventing new
> workarounds like :filter.
> 
> Enhancing :read to treat colon-prefixed commands as Vim commands is
> analogous to the way read treats !-prefixed commands.

That's an interesting idea.  It's already possible indirectly using
:redir.  But having it in one command is more convenient.  Well, with a
little bit of typing you can have it on one command:

        :$put =execute('let')

And you could also filter that:

        :$put =filter(split(execute('let'), '\n'), {i, v -> v =~ 'pat'})

But that is not something you would like to type.

However, we were discussing listing items, not changing the buffer.
Just like "ps | grep pattern" can be used to find something in a long
list.

-- 
"I can't complain, but sometimes I still do."   (Joe Walsh)

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui