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