On Sun, 17 Sep 2006 at 7:17pm, Meino Christian Cramer wrote:

> From: Tim Chase <[EMAIL PROTECTED]>
> Subject: Re: Hiding lines
> Date: Sun, 17 Sep 2006 11:15:13 -0500
>
> > >  One could hide lines matching or !matching a certain pattern. Any
> > >  further edit actions were only executed with the visible lines as
> > >  target. Regardless what you were doing -- only the visible lines were
> > >  affected. You had to give the "unhide" command explicitely to return
> > >  to "full text mode".
> > >
> > >  There is a script snipped in the VimTips (#77) which does something
> > >  like this, but the "hidden" lines are not protected or "really
> > >  invisible until unhide"...
> > >
> > >  Is there a way to mimic this feature with vim in any way ?
> >
> > Well, while it sounds like you may have already uncovered folding
> > (which will collapse/hide a bunch of lines into one), but as you
> > describe, it doesn't really protect those lines.  However, there
> > are some things you can do do make them a little more protected.
> >   If you're doing :s commands (or other Ex commands), you can
> > have them operate only over things that aren't currently folded
> > away by modifying your Ex statement to be:
> >
> >     :foldd s/foo/bar/g
> >
> > You can read all about folding at
> >
> >     :help fold.txt
> >
> > wherein you'll find
> >
> >     :help folddoopen
> >     :help folddoclosed
> >
> > which allow you to perform operations over sections of the file
> > that are/aren't folded.
> >
> > You don't really describe what "protected" means...so perhaps if
> > there are particular things that stymie you, you can mention them
> > and perhaps a solution can be found for the particular problems.
> >
> > If you just want to extract certain lines, you can make use of a
> > :g command, something like
> >
> >     :let @a=''
> >     :g/pattern/y A
> >
> > will gather all the lines matching "pattern" into the "a"
> > register.  This can be dumped in another buffer if needed.
> >
> > Or, I often find myself doing something like
> >
> >     :g/pattern/#
> >
> > which will show me all the line numbers in the current file for
> > lines matching "pattern" (after which I can just jump to that
> > line by typing the line-number followed by "G").
> >
> > Just a couple ideas...
> >
> > -tim
> >
>
> Hi Tim,
>
>  thank you for your explanations ! :O)
>
>  With "protected" I mean the effect of doing as follows (but I mean
>  the result only ... not the way which leads to it...)
>
>  There is a text with some lines containing the word "gold".
>  Those lines should never be changed/edited.
>  Therefore I will do a :g/gold/d
>  Then I will do all commands, mistakes or whatever, which I will
>  do -- all "gold" lines will not be affected.
>  After all that I will do a "undo delete of all lines containing
>  'gold'" -- and that's it.
>
>  In reality an "undo delete all lines containing /pattern/" is not
>  pratical, impossible, irritationg or whatelse. This is only as an
>  example for "being protected".
>
>  An Unix "chmod a-w" on all lines matching /pattern/ cames a little
>  closer to it -- unless you are root, hehehehe....
>
>  But in the last example those lines were not hidden.
>
>  Examples are only ...examples, therefore...
>
>  Hope my german English is english enough... ;)
>
>  Keep hacking!
>  mcc

Tim's :foldd and :foldo suggestions are actually very good in deed
(didn't know about them), especially with the help of tools to create
folds and operate commands on them. I would like to suggest you take a
look at my foldutil.vim (http://www.vim.org/script.php?script_id=158).
The benefit for you is that you can execute a single command to create
folds that include/exclude all the lines that are matching or
not-matching your specified pattern. You can then use :foldo or :foldd
commands to issue commands on them.

Also configure the 'foldopen' setting such that the folds will not be
automatically opened by Vim when you move cursor around. I think,
setting an empty value will help keep them closed as much as possible.

You might also be interested in my multiselect.vim plugin
(http://www.vim.org/script.php?script_id=953). It provides commands that
are similar in nature to :foldo and :foldd to restrict normal mode and
ex mode commands to selected regions. You can also use mouse to create
selections.

-- 
HTH,
Hari

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to