1034 lines
35 KiB
Groff
1034 lines
35 KiB
Groff
|
From dberg@informix.com (David I. Berg)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: In vi: How to delete from str1 to str2 ?
|
||
|
Date: 6 Oct 91 20:42:49 GMT
|
||
|
Status: O
|
||
|
|
||
|
In article <1991Oct6.073919.9071@acsu.buffalo.edu> xiaofei@acsu.buffalo.edu (XiaoFei Wang) writes:
|
||
|
>Suppose I have
|
||
|
>
|
||
|
>blabla string1 more blabla string2
|
||
|
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
>
|
||
|
>and Now I wnat to delete all the underlined ( from string1 to string2 )
|
||
|
>or replace it by something else, how do I do it in vi ?
|
||
|
|
||
|
You can delete/change/yank from the cursor position up to but not
|
||
|
including a character string. If, for instance, the character string
|
||
|
following string2 was " string3", you would position your cursor on the
|
||
|
first character you wish to delete/change/yank and enter 'd/ string3<cr>'
|
||
|
to delete the underscored string in your example. (You would use 'y' to
|
||
|
yank, and 'c' to change the string.) You can do this across several lines,
|
||
|
eg. position your cursor on "instance" above and 'd/ example<cr>'. In the
|
||
|
special case where you wish to delete/change/yank through the end of the
|
||
|
line, just plain 'D' will delete and 'C' will change through the end of
|
||
|
the line. If you wish to yank throuh the end of the line, you must 'y$'.
|
||
|
|
||
|
___ ___ Consultant, Client Srvcs Engineering
|
||
|
/ ) __ . __/ /_ ) _ __ Informix Software Inc. (303) 850-0210
|
||
|
_/__/ (_(_ (/ / (_(_ _/__> (-' -/~ (_- 5299 DTC Blvd #740 Englewood CO 80111
|
||
|
{uunet|pyramid}!infmx!dberg The opinions expressed herein are mine alone.
|
||
|
|
||
|
|
||
|
From hrjoist@immd4.informatik.uni-erlangen.de (Holger Joist)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: In vi: How to delete from str1 to str2 ?
|
||
|
Date: 7 Oct 91 12:26:40 GMT
|
||
|
Status: O
|
||
|
|
||
|
xiaofei@acsu.buffalo.edu (XiaoFei Wang) writes:
|
||
|
|
||
|
>Suppose I have
|
||
|
|
||
|
>blabla string1 more blabla string2
|
||
|
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
|
||
|
>and Now I wnat to delete all the underlined ( from string1 to string2 )
|
||
|
>or replace it by something else, how do I do it in vi ?
|
||
|
|
||
|
How about:
|
||
|
:s/string1.*string2/somethingelse/
|
||
|
|
||
|
where somethingelse can be an empty string.
|
||
|
|
||
|
Holger
|
||
|
---
|
||
|
Name : Holger Joist
|
||
|
E-Mail: hrjoist@medusa.informatik.uni-erlangen.de
|
||
|
|
||
|
|
||
|
From soh@andromeda.trl.OZ.AU (Kam Hung Soh)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: In vi: How to delete from str1 to str2 ?
|
||
|
Date: 7 Oct 91 22:12:04 GMT
|
||
|
Status: O
|
||
|
|
||
|
>Suppose I have
|
||
|
|
||
|
>blabla string1 more blabla string2
|
||
|
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
|
||
|
>and Now I wnat to delete all the underlined ( from string1 to string2 )
|
||
|
>or replace it by something else, how do I do it in vi ?
|
||
|
|
||
|
You can try: 4cE
|
||
|
^^
|
||
|
||
|
||
|
|+--- End of space-delimited word
|
||
|
+---- Change
|
||
|
|
||
|
``E'' can be substituted with ``W'' in this case.
|
||
|
|
||
|
If you have the following line instead (C and C++ programming for
|
||
|
accessing a member of a structure or record):
|
||
|
|
||
|
blabla string1.more.blabla.string2
|
||
|
|
||
|
You will have to type: ``7cw'' or ``7ce'' or ``cW'' or ``cE''. The
|
||
|
lowercase range is used when words are not space delimited. You can
|
||
|
also type ``C'' (in the same vein as ``D'' for delete until end of
|
||
|
line) when you have to change all words until the end of the line.
|
||
|
|
||
|
Regards,
|
||
|
|
||
|
---
|
||
|
Soh, Kam Hung email: h.soh@trl.oz.au tel: +61 3 541 6836
|
||
|
Telecom Research Laboratories, POB 249 Clayton, Victoria 3168, Australia
|
||
|
|
||
|
|
||
|
From dylan@ibmpcug.co.uk (Matthew Farwell)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: In vi: How to delete from str1 to str2 ?
|
||
|
Date: 7 Oct 91 08:21:53 GMT
|
||
|
Reply-To: dylan@ibmpcug.co.uk (Matthew Farwell)
|
||
|
Status: O
|
||
|
|
||
|
In article <1991Oct6.073919.9071@acsu.buffalo.edu> xiaofei@acsu.buffalo.edu (XiaoFei Wang) writes:
|
||
|
>Suppose I have
|
||
|
>blabla string1 more blabla string2
|
||
|
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
>and Now I wnat to delete all the underlined ( from string1 to string2 )
|
||
|
>or replace it by something else, how do I do it in vi ?
|
||
|
|
||
|
:s/string1.*string2/wobble wobble im a gertrude/
|
||
|
|
||
|
Dylan.
|
||
|
--
|
||
|
dylan@ibmpcug.co.uk || ...!uunet!uknet!ibmpcug!dylan
|
||
|
Just follow the simple rule - Rob Pike
|
||
|
|
||
|
|
||
|
From bill@camco.Celestial.COM (Bill Campbell)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: In vi: How do I put line numbers in frant of each line ?
|
||
|
Date: 8 Oct 91 04:04:53 GMT
|
||
|
Status: O
|
||
|
|
||
|
1:In <1991Oct6.214237.2266@acsu.buffalo.edu> xiaofei@acsu.buffalo.edu (XiaoFei Wang) writes:
|
||
|
2:>Suppose I have
|
||
|
3:>bla
|
||
|
4:>blabla
|
||
|
5:>blablabla
|
||
|
6:>......
|
||
|
7:>I would like to change it to
|
||
|
8:>1 bla
|
||
|
9:>2 blabla
|
||
|
10:>3 blablabla
|
||
|
11:>......
|
||
|
12:>Is there a way to do this automatically in vi ?
|
||
|
13:One way to do this within vi would be to put the cursor at the
|
||
|
14:beginning of the first line and press !Ggrep -n '^.*$' As I did
|
||
|
15:here (except that I put it at the beginning of the body of the
|
||
|
16:message). This gives line number separated by ':'
|
||
|
17:
|
||
|
18:Bill
|
||
|
--
|
||
|
INTERNET: bill@Celestial.COM Bill Campbell; Celestial Software
|
||
|
UUCP: ...!thebes!camco!bill 6641 East Mercer Way
|
||
|
uunet!camco!bill Mercer Island, WA 98040; (206) 947-5591
|
||
|
|
||
|
|
||
|
From roger@quantime.co.uk (Roger Phillips)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: writing from buffers
|
||
|
Date: 11 Oct 91 16:02:41 GMT
|
||
|
Status: O
|
||
|
|
||
|
In article <1991Oct10.081809.16080@apricot.co.uk>,
|
||
|
peters@apricot.co.uk (Peter Smith) writes:
|
||
|
> Is is possible in vi to write from named buffers?
|
||
|
> This seems a perfectly acceptable thing to do,
|
||
|
> but attempts using ":'aw filename" do not appear to work.
|
||
|
^^
|
||
|
The single quote means "the line marked 'a'".
|
||
|
In vi, you refer to named buffers using "a (for example).
|
||
|
But in ex (the mode you're in for a command starting with ':'),
|
||
|
the " is a comment symbol, so
|
||
|
:"aw filename
|
||
|
is simply a comment, with no effect.
|
||
|
Named buffers are purely a vi-mode thing, I think,
|
||
|
so, no, you can't refer to them in any ex-mode commands
|
||
|
(such as :w).
|
||
|
|
||
|
However, since you have what you want in a named buffer,
|
||
|
you can use
|
||
|
:e filename<RETURN>"ap
|
||
|
that is, edit the new file and 'put' the buffer contents.
|
||
|
|
||
|
--
|
||
|
Roger Phillips roger@quantime.co.uk
|
||
|
|
||
|
|
||
|
From mitchell@mdd.comm.mot.com (Bill Mitchell)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: How to disable 'vi' beep?
|
||
|
Keywords: beep bell dope vi
|
||
|
Date: 21 Oct 91 15:43:01 GMT
|
||
|
Status: O
|
||
|
|
||
|
In article <1665@baby.and.nl> jos@and.nl (Jos Horsmeier) writes:
|
||
|
>In article <1991Oct18.172458.17044@ux1.cso.uiuc.edu> d-lewart@uiuc.edu (Daniel S. Lewart) writes:
|
||
|
>|There is a novice 'vi' user in my office. Every two seconds a beep emanates
|
||
|
>|from his terminal. How can this beep be disabled? Typing 'set noerrorbells'
|
||
|
>|does not disable the beep one gets from pressing the 'Escape' key ten times.
|
||
|
>
|
||
|
>I would have loved to know the answer to that! Years ago I worked at a
|
||
|
>university with lots of newbies. All these beeps worked like a chinese
|
||
|
>water torture! We ended up, cutting all the wires from the speakers ...
|
||
|
>We couldn't stand it no more 8^)
|
||
|
>
|
||
|
>Jos aka jos@and.nl
|
||
|
|
||
|
You might try having novice users invoke vi thru a shell script like
|
||
|
the following:
|
||
|
|
||
|
vi x | tr -d '\007'
|
||
|
--
|
||
|
mitchell@mdd.comm.mot.com (Bill Mitchell)
|
||
|
|
||
|
|
||
|
From mitchell@mdd.comm.mot.com (Bill Mitchell)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: How to disable 'vi' beep?
|
||
|
Keywords: beep bell dope vi
|
||
|
Date: 21 Oct 91 16:11:32 GMT
|
||
|
Status: O
|
||
|
|
||
|
In article <1991Oct21.154301.12900@mdd.comm.mot.com> mitchell@mdd.comm.mot.com (Bill Mitchell) writes:
|
||
|
>
|
||
|
>You might try having novice users invoke vi thru a shell script like
|
||
|
>the following:
|
||
|
>
|
||
|
> vi x | tr -d '\007'
|
||
|
|
||
|
Let me be the first to take myself to task for posting this in haste.
|
||
|
|
||
|
1. This worked at a quick trial from the command line, and I posted.
|
||
|
|
||
|
2. After seeing it appear (oops), I tried it as a script with "$1"
|
||
|
instead of "x". Suprise - it didn't work. BELs got through.
|
||
|
Seems my shell issues BELs at multiple escapes, and tr isn't placed to
|
||
|
filter these BELs off.
|
||
|
|
||
|
3. This approach might have problems anyway (and might not) depending
|
||
|
on what type of terminal the user is using. On some terminals, the
|
||
|
'\007' might show up other than as a BEL character - as part of a
|
||
|
cursor positioning sequence for example.
|
||
|
|
||
|
Anyway, it might be worth trying
|
||
|
|
||
|
vi filename | tr -d '\007'
|
||
|
|
||
|
from the command line. If that works, maybe it'll work as an alias.
|
||
|
|
||
|
--
|
||
|
mitchell@mdd.comm.mot.com (Bill Mitchell)
|
||
|
|
||
|
|
||
|
From ruhtra@turing.toronto.edu (Arthur Tateishi)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: Tabs as spaces in VI.
|
||
|
Date: 22 Oct 91 04:25:58 GMT
|
||
|
Status: O
|
||
|
|
||
|
In article <1991Oct21.221438.223@acsu.buffalo.edu> xiaofei@acsu.buffalo.edu (XiaoFei Wang) writes:
|
||
|
>/* From the keyboard of eric@tfs.com (Eric Smith) */:
|
||
|
>* I'm not sure what the original poster wanted, but can someone tell me
|
||
|
>* how to disable vi's usage of tab as a fill character? i.e., when it
|
||
|
>* does autoindent, it uses a mixture of tabs and spaces. I just want it
|
||
|
>* to use spaces.
|
||
|
>
|
||
|
>In my opinion, TABs are just a group of spaces and I prefer spaces and
|
||
|
>use TABs as less as possible.
|
||
|
>
|
||
|
>To answer your question as how to disable vi's usage TAB as filling
|
||
|
>character, you need to
|
||
|
>
|
||
|
>set tabstop=1
|
||
|
>
|
||
|
>This will set TAB = a single space. I have tested and it worked.
|
||
|
|
||
|
Not quite. It looks right in vi but what you have really done is
|
||
|
cause lots and lots of tabs to be inserted into the document in
|
||
|
order to get indenting. Instead, use:
|
||
|
set tabstop=200
|
||
|
So that vi thinks it can't use tabs to get the required small amount
|
||
|
of indent. Of course, this now becomes dangerous when you actually
|
||
|
hit tab or load in files with tabs already present. Therefore,
|
||
|
you may also consider mapping tab in insert mode to ^D which does
|
||
|
the desired thing a lot of the time.
|
||
|
map! ^V^I ^D
|
||
|
|
||
|
--
|
||
|
"The first fact to face is that UNIX was not developed with security, in any
|
||
|
reliable sense, in mind; this fact alone guarantees a vast number of holes."
|
||
|
-- "On the Security of UNIX", Dennis M. Ritchie
|
||
|
Arthur Tateishi ruhtra@turing.utoronto.ca
|
||
|
|
||
|
|
||
|
From krisk@ux1.cso.uiuc.edu (Kris Klindworth)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: vi question, replace second occurence
|
||
|
Keywords: vi, s-e
|
||
|
Date: 24 Oct 91 16:24:54 GMT
|
||
|
Status: O
|
||
|
|
||
|
hess@rosun1.informatik.uni-hamburg.de (Hauke Hess) writes:
|
||
|
|
||
|
>Hi,
|
||
|
|
||
|
>I'm working on a TeXnification of the jargon file. That's not too difficult,
|
||
|
>but there is one thing I would like to do by Search&Replace, which I don't
|
||
|
>know how:
|
||
|
|
||
|
>In the Jargonfile are many words enclosed in ", like the following sentence
|
||
|
|
||
|
>the "slow" brown fox jumps over the "crazy" dog.
|
||
|
|
||
|
>I want to change that sentence in:
|
||
|
|
||
|
>the ``slow'' brown fox jumps over the ``crazy'' dog.
|
||
|
|
||
|
>for the sake of typographical correctness. In other words: how do I replace
|
||
|
>each second occurence of a string with another, with not respect to lineends
|
||
|
>between the words?
|
||
|
>So a sentence like
|
||
|
|
||
|
>there is a "problem
|
||
|
>extraordinaire" in here.
|
||
|
|
||
|
>should be replaced as well.
|
||
|
|
||
|
>I thought it would have somthing to do with "finding the Nth occurrence"
|
||
|
>as asked a few letters ago, but the answers on that weren't that helpfull.
|
||
|
|
||
|
|
||
|
For this problem you can use
|
||
|
:%s/"\</``/
|
||
|
and
|
||
|
:%s/\>"/''/
|
||
|
|
||
|
The special pattern \< matches the beginning of what vi considers a word
|
||
|
and \> matches the end. You'll still have to check the file to resolve
|
||
|
the cases that vi didn't consider words, but this should handle the
|
||
|
bulk of your changes.
|
||
|
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
Kris Klindworth Internet: krisk@ux1.cso.uiuc.edu
|
||
|
Database Programmer/Analyst Phone : (217)244-7120
|
||
|
Illinois State Water Survey US Mail : 2204 Griffith Dr
|
||
|
Champaign, IL 61820
|
||
|
|
||
|
|
||
|
From gwc@root.co.uk (Geoff Clare)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: vi question - am I so different?
|
||
|
Date: 24 Oct 91 18:07:31 GMT
|
||
|
Status: O
|
||
|
|
||
|
In <28900002@teecs.UUCP> belkin@teecs.UUCP (Hershel Belkin) writes:
|
||
|
|
||
|
>Thanks for the attempted answers, but no cigar yet!!
|
||
|
>Any other suggestions, or should I start looking for
|
||
|
>a _real_ editor?
|
||
|
|
||
|
Here's a macro that provides repeated "n" commands.
|
||
|
|
||
|
:map ^N In^V^[l"zd^@z
|
||
|
|
||
|
where ^V, ^N and ^[ are CTRL-V, CTRL-N and ESC (but ^@ is ^ then @).
|
||
|
|
||
|
To use it, search for the first occurrence of the string, then type
|
||
|
|
||
|
<number> CTRL-N
|
||
|
|
||
|
E.g. to search for the 96th occurrence of the string "xyz", type:
|
||
|
|
||
|
/xyz^M96^N
|
||
|
|
||
|
The reason this has a 96 instead of a 95 is that the macro actually
|
||
|
searches from the beginning of the current line, not from the cursor, so
|
||
|
it finds the first match again (unless it's at the beginning of the line!)
|
||
|
You just have to be a bit careful when there are multiple matches on a
|
||
|
line, otherwise it works OK.
|
||
|
|
||
|
If anyone can think of a way round the "beginning of line" problem, I'd
|
||
|
like to hear it!
|
||
|
--
|
||
|
Geoff Clare <gwc@root.co.uk> (USA UUCP-only mailers: ...!uunet!root.co.uk!gwc)
|
||
|
UniSoft Limited, London, England. Tel: +44 71 729 3773 Fax: +44 71 729 3273
|
||
|
|
||
|
|
||
|
From krisk@ux1.cso.uiuc.edu (Kris Klindworth)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: vi question - am I so different?
|
||
|
Date: 24 Oct 91 22:48:08 GMT
|
||
|
Status: O
|
||
|
|
||
|
gwc@root.co.uk (Geoff Clare) writes:
|
||
|
|
||
|
>In <28900002@teecs.UUCP> belkin@teecs.UUCP (Hershel Belkin) writes:
|
||
|
|
||
|
>>Thanks for the attempted answers, but no cigar yet!!
|
||
|
>>Any other suggestions, or should I start looking for
|
||
|
>>a _real_ editor?
|
||
|
|
||
|
>Here's a macro that provides repeated "n" commands.
|
||
|
|
||
|
> :map ^N In^V^[l"zd^@z
|
||
|
|
||
|
>where ^V, ^N and ^[ are CTRL-V, CTRL-N and ESC (but ^@ is ^ then @).
|
||
|
|
||
|
>If anyone can think of a way round the "beginning of line" problem, I'd
|
||
|
>like to hear it!
|
||
|
|
||
|
Cool solution. Much better than the one I was about to post. I
|
||
|
got around the beginning of line problem by marking the beginning position
|
||
|
first and then returning to it before running the @z.
|
||
|
Your macro would be something like this
|
||
|
|
||
|
:map ^N mzIn^V^[l"zd^`z@z
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
Kris Klindworth Internet: krisk@ux1.cso.uiuc.edu
|
||
|
Database Programmer/Analyst Phone : (217)244-7120
|
||
|
Illinois State Water Survey US Mail : 2204 Griffith Dr
|
||
|
Champaign, IL 61820
|
||
|
|
||
|
|
||
|
From malte@techfak.uni-bielefeld.de (Malte Uhl)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: vi question - am I so different?
|
||
|
Date: 25 Oct 91 10:17:39 GMT
|
||
|
Status: O
|
||
|
|
||
|
In article <3553@root44.co.uk>, gwc@root.co.uk (Geoff Clare) writes:
|
||
|
|>
|
||
|
|> Here's a macro that provides repeated "n" commands.
|
||
|
|>
|
||
|
|> :map ^N In^V^[l"zd^@z
|
||
|
|>
|
||
|
|> where ^V, ^N and ^[ are CTRL-V, CTRL-N and ESC (but ^@ is ^ then @).
|
||
|
|>
|
||
|
|> To use it, search for the first occurrence of the string, then type
|
||
|
|>
|
||
|
|> <number> CTRL-N
|
||
|
|>
|
||
|
|> E.g. to search for the 96th occurrence of the string "xyz", type:
|
||
|
|>
|
||
|
|> /xyz^M96^N
|
||
|
|>
|
||
|
|> The reason this has a 96 instead of a 95 is that the macro actually
|
||
|
|> searches from the beginning of the current line, not from the cursor, so
|
||
|
|> it finds the first match again (unless it's at the beginning of the line!)
|
||
|
|> You just have to be a bit careful when there are multiple matches on a
|
||
|
|> line, otherwise it works OK.
|
||
|
|>
|
||
|
|> If anyone can think of a way round the "beginning of line" problem, I'd
|
||
|
|> like to hear it!
|
||
|
|
||
|
Here it is:
|
||
|
:map ^N In^V^[l"zd^n@z
|
||
|
|
||
|
just add another n to it.
|
||
|
|
||
|
One could also do some experiments with ``, which means "go back to the letter
|
||
|
you were before the last command". I'm not familiar with this command; I
|
||
|
usually use '', which goes back to the line before the last command.
|
||
|
|
||
|
|
||
|
Article: 3325 of comp.editors
|
||
|
From lshaw@ccwf.cc.utexas.edu (Logan Shaw)
|
||
|
Subject: Re: vi question, replace second occurence
|
||
|
Keywords: vi, s-e
|
||
|
Date: 26 Oct 91 01:08:15 GMT
|
||
|
|
||
|
hess@rosun1.informatik.uni-hamburg.de (Hauke Hess)
|
||
|
|
||
|
wants to change
|
||
|
|
||
|
the "slow" brown fox jumps over the "crazy" dog.
|
||
|
|
||
|
to
|
||
|
|
||
|
the ``slow'' brown fox jumps over the ``crazy'' dog.
|
||
|
|
||
|
>So a sentence like
|
||
|
>
|
||
|
>there is a "problem
|
||
|
>extraordinaire" in here.
|
||
|
>
|
||
|
>should be replaced as well.
|
||
|
|
||
|
His approach to the problem was to replace every _other_ occurence
|
||
|
of the double quote character ('"').
|
||
|
|
||
|
I'd like to suggest a different approach. Replace the quote characters
|
||
|
one of the two replacement strings, determining which to replace
|
||
|
them with by the surrounding characters.
|
||
|
|
||
|
If the quote is at the beginning of the line, it should be a beginning
|
||
|
quote. If at the end of the line, and end quote. This assumes
|
||
|
you're not going to have a sentence like this:
|
||
|
|
||
|
His name was "Phroed
|
||
|
" and he was green.
|
||
|
|
||
|
nor like this:
|
||
|
|
||
|
I'm watching the TV program "
|
||
|
Matlock."
|
||
|
|
||
|
If a quote has a alphanumeric character before it, and not after it,
|
||
|
it should be replaced with and ending quote, and vice versa. If it
|
||
|
has a space before it and not after it, an ending quote, and vice versa.
|
||
|
|
||
|
The regexp's for this would be something like:
|
||
|
|
||
|
:%s/^"/``/
|
||
|
:%s/"$/''/
|
||
|
:%s/ "\([^ ]\)/ ``\1/g
|
||
|
:%s/\([^ ]\)" /\1'' /g
|
||
|
:%s/\([a-z0-9]\)"\([^a-z0-9]\)/\1''\2/g
|
||
|
:%s/\([^a-z0-9]\)"\([a-z0-9]\)/\1``\2/g
|
||
|
|
||
|
Hope this helps...
|
||
|
|
||
|
Adios,
|
||
|
Logan
|
||
|
--
|
||
|
: Our trial is which car to buy. Temptation is that extra dessert. :
|
||
|
|In the land of orange juice you're better off with the right kind of shirt.|
|
||
|
| But take away the naivete; expose the sources of our fears. |
|
||
|
:We'll run to missiles if we're pushed too far- proceed to blow it all away.:
|
||
|
|
||
|
|
||
|
From gast@oahu.cs.ucla.edu (David Gast)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: vi question, replace second occurence
|
||
|
Keywords: vi, s-e
|
||
|
Date: 28 Oct 91 00:13:51 GMT
|
||
|
Status: O
|
||
|
|
||
|
In article <hess.688300281@rosun1> hess@rosun1.informatik.uni-hamburg.de (Hauke Hess) writes:
|
||
|
|
||
|
> how do I replace each second occurence of a string with another [ignoring]
|
||
|
> lineends.
|
||
|
|
||
|
>there is a "problem
|
||
|
>extraordinaire" in here.
|
||
|
|
||
|
>should be replaced as well.
|
||
|
|
||
|
First off, I am not sure that 100% automated process will work correctly.
|
||
|
There is a chance that a problem will develop. For example, there could
|
||
|
be a " missing, or an extra one inserted in the wrong place. Additionally,
|
||
|
at some point, " could be used by itself as in this sentence.
|
||
|
|
||
|
I would first check for some of the above and I would see if you have any
|
||
|
"' or '" pairs. Assuming that everything is as it should be, then I suggest
|
||
|
the following. It is not the fastest way possible, but you can look at
|
||
|
the screen and make sure that everything appears to be working properly.
|
||
|
|
||
|
1. /" (that is, search for a ")
|
||
|
2. put the cursor before the current position in file)
|
||
|
|
||
|
3. Define the following maps. You can use any lefthand side character that
|
||
|
you want.
|
||
|
|
||
|
:map b ns``^V^M
|
||
|
:map e ns''^V^M
|
||
|
:map g bebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebe
|
||
|
|
||
|
4. Now type g as many times as necessary. You could do something like
|
||
|
|
||
|
:map G ggggggggggggggggggggggggggggggggggggggggggggg
|
||
|
|
||
|
and then type G as many times as necessary.
|
||
|
|
||
|
If you save your file frequently, then when something goes wrong, you have
|
||
|
the problem isolated to a relatively small area. Perhaps I am being
|
||
|
pessimistic, but I suspect there is at least one typo in a file that
|
||
|
has over one meg in it.
|
||
|
|
||
|
David
|
||
|
|
||
|
|
||
|
From hansm@cs.kun.nl (Hans Mulder)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: removing first field from a number of lines with vi
|
||
|
Date: 29 Oct 91 17:52:28 GMT
|
||
|
Status: O
|
||
|
|
||
|
In <5561@julian.uwo.ca> creider@taptet.sscl.uwo.ca (Chet A. Creider) writes:
|
||
|
>I know this is easily done with awk, but would like to know if it
|
||
|
>can be done with vi--if one has a file with data in tab-separated
|
||
|
>fields and wants to remove the first field from each line (in other
|
||
|
>words a dw done at the beginning of each line in the file), how
|
||
|
>can this be done?
|
||
|
|
||
|
Those are two different questions.
|
||
|
|
||
|
If you want to delete everything up to and including the first tab,
|
||
|
you could do
|
||
|
|
||
|
:%s/[^ ]* //
|
||
|
^ ^ those are tab characters
|
||
|
|
||
|
If, on the other hand, you want the equivalent of a dw at the beginning of
|
||
|
each line, you would say:
|
||
|
|
||
|
:%s/[a-zA-Z0-9_]*[ ]*//
|
||
|
^tab ^space
|
||
|
|
||
|
You can leave off trailing slashes on a :s command if you hate wearing out
|
||
|
your '/' key. (Or you can use another punctuation character ;-)
|
||
|
|
||
|
I don't see any obvious way to get either of these effects by filtering
|
||
|
the buffer through awk. But if you know an awk command that does what you
|
||
|
want, you can say from within vi
|
||
|
|
||
|
1G!G awk 'whatever'
|
||
|
|
||
|
and it ought to work.
|
||
|
|
||
|
--
|
||
|
Hope this helps,
|
||
|
|
||
|
Hans Mulder hansm@cs.kun.nl
|
||
|
|
||
|
From s887212@minyos.xx.rmit.oz.au (S.Riehm)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: Smart 'C' editors?!?
|
||
|
Date: 29 Oct 91 22:36:49 GMT
|
||
|
Status: O
|
||
|
|
||
|
valley@gsbsun.uchicago.edu (Doug Dougherty) writes:
|
||
|
|
||
|
>A couple of (presumably dumb) questions:
|
||
|
> 1) What does map! do (as opposed to plain ol' map) ?
|
||
|
> 2) What do things like /*, ca', and ei' mean as map! targets?
|
||
|
> (They sure don't look like keys to me)
|
||
|
|
||
|
1: map! defines mappings for keys while in insert mode
|
||
|
2: you can map strings, vi will give you time to type the whole
|
||
|
string, and that string will b instantly replaced by whatever you have
|
||
|
mapped it to. if you set notimeout, vi will wait forever when you
|
||
|
start typing a map string, which can be most annoying if you actually
|
||
|
want the string. this is also why J-P Radly put the ' on the end of
|
||
|
his macros, because you rarely type wh'.
|
||
|
When timeout is set vi will wait about one second after each character
|
||
|
in a macro string before timing out and simply using the string as
|
||
|
typed
|
||
|
|
||
|
ALSO...
|
||
|
>jpr@jpradley.jpr.com (Jean-Pierre Radley) writes:
|
||
|
|
||
|
>>And these macros might be of interest to you:
|
||
|
|
||
|
>>se nu ts=5 wm=0 sw=5
|
||
|
>>map! /* /* */hhi
|
||
|
>>map! ca' case : break;k0f:i
|
||
|
>>map! ei' else if () {}kk0f(a
|
||
|
>>map! el' else {}ki
|
||
|
>>map! if' if () {}k0f(a
|
||
|
>>map! fo' for (;;) {}k0f(a
|
||
|
>>map! wh' while () {}k0f(a
|
||
|
>>map #0 :!cc %
|
||
|
|
||
|
firstly: there is no reason to set ts=5, tabs are 8 characters by
|
||
|
default on 99% of the machines that I have ever heard of, if you less
|
||
|
or more your code you will get a nasty surprise. Instead, get used to
|
||
|
using ^T and ^D to do your indenting and outdenting (!?) instead of
|
||
|
tabs. vi will put tabs in for you where appropriate!
|
||
|
|
||
|
secondly: I played with macros like these some time ago, but found
|
||
|
them somewhat clumsy, I have now come up with a system of bracketing
|
||
|
and jump points. by mapping an unused key to be my 'jump to next jump
|
||
|
point' I can quickly nest any number of brackets, and jump around
|
||
|
within them with a minimum of fuss. Here the we use backspace (^H)
|
||
|
in-stead of del keys, so the del key is my jump key.
|
||
|
|
||
|
I have defined a jump point as two tilde's ( ~~ ) as I have NEVER seen
|
||
|
this string in any code or text thus far :-)
|
||
|
|
||
|
--- cut here ---
|
||
|
:set magic sw=4 ai
|
||
|
" jump to next jump point
|
||
|
:map ^? /\~\~^M2s
|
||
|
:map! ^? ^[/\~\~^M2s
|
||
|
:map! (( ( )~~^[3hi
|
||
|
:map! () ()~~^[2hi
|
||
|
:map! [[ [ ]~~^[3hi
|
||
|
:map! [] []~~^[2hi
|
||
|
:map! "" ""~~^[2hi
|
||
|
:map! '' ''~~^[2hi
|
||
|
" new block definition
|
||
|
:map! }{ ^[A^M{^M}~~^[O^T
|
||
|
:map! {{ { }~~^[3hi
|
||
|
:map! {} {}~~^[2hi
|
||
|
:map! (_ ( );~~^[4hi
|
||
|
:map! (+ ( ~~ )}{~~^[?\~\~.*)^M2s
|
||
|
:map! // /* ^I*/^[F a
|
||
|
:map! *& /*^M */~~^[O*
|
||
|
:map! *_ /*^M^M*/^[2ko^M
|
||
|
:map! /- ^[0i/*-^[x76po^M^M*/~~^[kO^I
|
||
|
" #include lines made easy
|
||
|
:map! >< .h>^[Bi<`in^[A
|
||
|
:map! >" .h"^[Bi"`in^[A
|
||
|
" other # lines made easy
|
||
|
:map! `if ^[0i#ifdef
|
||
|
:map! `el ^[0i#else
|
||
|
:map! `li ^[0i#elseif
|
||
|
:map! `en ^[0i#endif
|
||
|
:map! `in ^[0i#include
|
||
|
:map! `de ^[0i#define
|
||
|
:map! argcv argc, argv^[oint argc;^Mchar **argv;^[/\~\~^M2s
|
||
|
--- cut here ---
|
||
|
|
||
|
I will leave you to work out which ^'s are ^V's :-)
|
||
|
|
||
|
one of the problems with these macros is that they tend to make
|
||
|
cutting and pasting in Xwindows a little nasty at times, I know of one
|
||
|
person who has put a ^U in front of the (( type macros to prevent
|
||
|
this.
|
||
|
|
||
|
hope these help your productivity
|
||
|
|
||
|
catchya
|
||
|
|
||
|
======================================================================
|
||
|
Stephen Riehm [Romulis] s887212@minyos.xx.rmit.edu.au
|
||
|
BKX Australia Phone: +61 3 889 0459 Fax: +61 3 889 3227
|
||
|
== Disclaimer: I claim no responsibility for my employer's actions. ==
|
||
|
|
||
|
|
||
|
From krisk@ux1.cso.uiuc.edu (Kris Klindworth)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: vi question, replace second occurence
|
||
|
Keywords: vi
|
||
|
Date: 30 Oct 91 19:00:29 GMT
|
||
|
Status: O
|
||
|
|
||
|
(Johathan Chin ask me to post this followup for him. Evidently
|
||
|
they are having problems with their news system. krisk@ux1.cso.uiuc.edu)
|
||
|
|
||
|
In article <1991Oct24.162454.4759@ux1.cso.uiuc.edu> krisk@ux1.cso.uiuc.edu (Kris Klindworth) writes:
|
||
|
>hess@rosun1.informatik.uni-hamburg.de (Hauke Hess) writes:
|
||
|
>
|
||
|
>>In the Jargonfile are many words enclosed in ", like the following sentence
|
||
|
>
|
||
|
>>the "slow" brown fox jumps over the "crazy" dog.
|
||
|
>
|
||
|
>>I want to change that sentence in:
|
||
|
>
|
||
|
>>the ``slow'' brown fox jumps over the ``crazy'' dog.
|
||
|
>
|
||
|
>>for the sake of typographical correctness. In other words: how do I replace
|
||
|
>>each second occurence of a string with another, with not respect to lineends
|
||
|
>>between the words?
|
||
|
>>So a sentence like
|
||
|
>
|
||
|
>>there is a "problem
|
||
|
>>extraordinaire" in here.
|
||
|
>
|
||
|
>>should be replaced as well.
|
||
|
>
|
||
|
>For this problem you can use
|
||
|
>:%s/"\</``/
|
||
|
>and
|
||
|
>:%s/\>"/''/
|
||
|
|
||
|
Perhaps a better way is:
|
||
|
:g/$/s/"\([^"]*\)"/``\1''/g
|
||
|
|
||
|
which replaces all occurrences of "string" in the file. It does not
|
||
|
touch strings that extend over line boundaries though. For that, you
|
||
|
could look for the last " on a line, change it to ``, go to next
|
||
|
occurrence of " and change to ''. Something like (untested):
|
||
|
|
||
|
:1|s/"\([^"]*\)$/``\1/|s/^\([^"]*\)"/\1''/
|
||
|
|
||
|
which changes the first occurrence of the quoted string. Perhaps wrapping
|
||
|
this in a global will work:
|
||
|
|
||
|
:g/$/1|s/"\([^"]*\)$/``\1/|s/^\([^"]*\)"/\1''/
|
||
|
|
||
|
but I haven't tried it.
|
||
|
|
||
|
Have fun,
|
||
|
|
||
|
Jonathan Chin
|
||
|
shrchin@uk.ac.rdg.susssys1
|
||
|
Department of Cybernetics, University of Reading, England.
|
||
|
|
||
|
From asylvain@felix.UUCP (Alvin "the Chipmunk" Sylvain)
|
||
|
Newsgroups: comp.editors
|
||
|
Subject: Re: filling paragraph in vi
|
||
|
Date: 30 Oct 91 21:17:12 GMT
|
||
|
Status: O
|
||
|
|
||
|
Written in article <754@skyking.UUCP>
|
||
|
by jc@skyking.UUCP (J.C. Webber III):
|
||
|
|
||
|
: In <CKCLARK.91Oct18135300@paris.mit.edu> ckclark@athena.mit.edu
|
||
|
: (Calvin Clark) writes:
|
||
|
:
|
||
|
: >Novice question:
|
||
|
:
|
||
|
: >How does one fill a paragraph in vi?
|
||
|
:
|
||
|
: It requires an external unix command (ie. fmt or mfold).
|
||
|
: Many unix systems have a formating command called fmt. To use it
|
||
|
: within vi you would position your curser on the first character of
|
||
|
: the paragraph that you would like to format and then type "!}fmt"
|
||
|
: (without the qoutes). If you desire more or less characters than
|
||
|
: the default (72 I think), say 60, then you would type "!}fmt 60".
|
||
|
|
||
|
Yours may work that way. Mine attempts to format a file named "60".
|
||
|
|
||
|
Ah, here we go ... "!}fmt -60" seems to work. Never thot of that.
|
||
|
Always wanted that feature, and could never get it to work. Oh well.
|
||
|
|
||
|
: For those systems that do not have fmt, there is a public domain
|
||
|
: program called mfold that does the job quite nicely. The only problem
|
||
|
: I have with it (and I have to use it because I don't have fmt) is that
|
||
|
: it drops one of the double spaces after the period between sentences.
|
||
|
: I have to go back and put them back in by hand. If anyone has a fix
|
||
|
: for this inconvience I would appreciate it.
|
||
|
|
||
|
I have a "fix," but it's rather long. However, it has the additional
|
||
|
features of automatically hyphenating long multi-syllabled words that
|
||
|
almost fit, plus you can turn that off on demand, or, change the line
|
||
|
length, indentation, etc., on demand.
|
||
|
|
||
|
This makes two important assumptions, and they are:
|
||
|
1) You have "nroff" on your system, located in /usr/bin
|
||
|
This is the powerhouse, the engine that drives the utility. This is
|
||
|
what allows you to do damn near any kind of ASCII text formatting
|
||
|
you'd want.
|
||
|
2) You have "lex" on your system.
|
||
|
This gives you the auto-double-spaces after sentences. "nroff"
|
||
|
doesn't do that, relying on the user to add these where needed.
|
||
|
I guess that saves it from figuring out "Mr." etc. Well, all
|
||
|
that's loaded into the "lex" source code provided below.
|
||
|
|
||
|
If you do NOT have "lex", this can still work if you write a "pre_nroff"
|
||
|
utility by hand. It's job in life is to guarantee that periods at the
|
||
|
end of sentences have two spaces, something that "nroff" leaves to the
|
||
|
user. Have it filter stdin to stdout.
|
||
|
|
||
|
Of course, if you don't have "lex", you probably don't have "nroff" either.
|
||
|
|
||
|
First, you copy this shell script and put it on your path somewhere. Call
|
||
|
it "Nroff". It's contents are as follows:
|
||
|
|
||
|
--------cut here--------Begin of Nroff--------
|
||
|
#!/bin/csh -f # start quicker by avoiding .cshrc
|
||
|
#
|
||
|
# Nroff:
|
||
|
# This script allows me to use "nroff" to format paragraphs from "vi"
|
||
|
# Written for the C-shell.
|
||
|
#
|
||
|
# Alvin "the Chipmunk" Sylvain
|
||
|
|
||
|
if ( $#argv == 0 ) then # no arguments, use the default
|
||
|
pre_nroff | /usr/bin/nroff -i ~/.Nroff.default
|
||
|
else # construct a new defaults file from arguments
|
||
|
cp ~/.Nroff.default ~/.Nroff.temp
|
||
|
|
||
|
while ( $#argv > 0 ) # add new parms to specifications
|
||
|
switch ( $1 ) # check for no-arg parms.
|
||
|
case .nh: # no hyphenate
|
||
|
case .nf: # no fill
|
||
|
case .fi: # fill
|
||
|
case .na: # no adjust (turn off right justification)
|
||
|
case .ad: # adjust (turn on right justification)
|
||
|
echo $1 >> ~/.Nroff.temp
|
||
|
shift # advance to next parameter(s)
|
||
|
breaksw
|
||
|
case *: # all else is assumed to be 1-arg parms
|
||
|
echo $1 $2 >> ~/.Nroff.temp
|
||
|
shift # advance to next parameter(s)
|
||
|
shift
|
||
|
breaksw
|
||
|
endsw
|
||
|
end
|
||
|
|
||
|
pre_nroff | /usr/bin/nroff -i ~/.Nroff.temp
|
||
|
|
||
|
/bin/rm -f ~/.Nroff.temp
|
||
|
endif
|
||
|
--------cut here--------End of Nroff--------
|
||
|
|
||
|
Now, this uses a permanent datafile with defaults that instruct "nroff"
|
||
|
on how to format a paragraph. They are stored in "$HOME/.Nroff.default",
|
||
|
and the ones I've selected that suit me are:
|
||
|
|
||
|
--------cut here--------Begin of $HOME/.Nroff.default--------
|
||
|
.na
|
||
|
.pl 1
|
||
|
.ll 72
|
||
|
.hy 12
|
||
|
--------cut here--------End of $HOME/.Nroff.default--------
|
||
|
|
||
|
The "nroff" commands above are:
|
||
|
.na - no adjust (turns off right justification)
|
||
|
.pl 1 - page length of 1 (otherwise, it adds enough empty lines to
|
||
|
fill a page)
|
||
|
.ll 72 - line-length of 72 (obvious enough)
|
||
|
.hy 12 - shoot, I forget how this works, but it controls how it
|
||
|
hyphenates. RTFM.
|
||
|
|
||
|
You can change these defaults, naturally, but I recommend you leave in
|
||
|
the ".pl 1", otherwise, it will give you an entire page each time you
|
||
|
use it to format a paragraph. That results in your paragraph followed
|
||
|
by enough empty lines to make whatever the page size is.
|
||
|
|
||
|
"pre_nroff" is a filter written in "lex" that makes certain, more or
|
||
|
less, that the number of spaces after periods is correct. It repairs
|
||
|
the complaint in J.C.Webber's article that prompted this whole thing.
|
||
|
It also handles question marks, exclamation points, quotes, close
|
||
|
parentheses, hyphens, and a few titles ("Mr.", "Dr.").
|
||
|
|
||
|
It's contents are:
|
||
|
|
||
|
--------cut here--------Begin of pre_nroff.lex--------
|
||
|
punct [\.\!\?]
|
||
|
tbsp [\t ]
|
||
|
tbspnl [\t \n]
|
||
|
clsprn [\"\)\]\}]
|
||
|
%%
|
||
|
"-"{tbspnl}+ ;
|
||
|
etc\." " printf ("etc. ");
|
||
|
Dr\.{tbspnl}+ printf ("Dr. ");
|
||
|
Mr\.{tbspnl}+ printf ("Mr. ");
|
||
|
Mrs\.{tbspnl}+ printf ("Mrs. ");
|
||
|
{punct}{tbsp}+ printf ("%c ", yytext [0]);
|
||
|
{punct}{clsprn}{tbsp}+ printf ("%c%c ", yytext [0], yytext [1]);
|
||
|
{tbsp}+ printf (" ");
|
||
|
--------cut here--------End of pre_nroff.lex--------
|
||
|
|
||
|
My version appears to have a bug in handling an ellipis (...) so I left
|
||
|
that line out of this version. As you can see, it also attempts to han-
|
||
|
dle "Mr. Smith" correctly, but naturally will fail if "Mr." is the last
|
||
|
word on the sentence. It also attempts to handles periods within
|
||
|
quotes, so that, eg., "These are my words." will be treated as a sen-
|
||
|
tence, with two spaces after the ending quote.
|
||
|
|
||
|
The paragraph above was left exactly as processed by the pre_nroff/nroff
|
||
|
combination, so you can see exactly where it works and where it fails.
|
||
|
Apparently the period-quote combination overrides the "Mr." check, ie.,
|
||
|
it puts two spaces after the period despite the title. Well, it ain't
|
||
|
perfect, obviously, and it certainly can't read your mind.
|
||
|
|
||
|
It handles hyphens by eliminating them ONLY from the ends of lines.
|
||
|
Ie., if the hyphen ends the line, it is removed and the word beginning
|
||
|
the next line is glued to the word ending the current line. Within the
|
||
|
line, they are ignored. This has an advantage and a disadvantage.
|
||
|
|
||
|
The advantage is that if you modify the text such that the word no
|
||
|
longer needs to be hyphenated, "pre_nroff" will glue the pieces back
|
||
|
together again. "nroff" doesn't do this, assuming that you are using
|
||
|
separate source and target files. The disadvantage is that words that
|
||
|
are SUPPOSED to be hyphened, such as "mother-in-law," that "nroff" hap-
|
||
|
pened to break at the line-end, will ALSO be glued back together. If
|
||
|
you use such words, you have to watch out for them.
|
||
|
|
||
|
To create the program "pre_nroff" from this "lex" source, perform the
|
||
|
following:
|
||
|
|
||
|
lex -t pre_nroff.lex > pre_nroff.c
|
||
|
cc -o pre_nroff pre_nroff.c -ll
|
||
|
|
||
|
USAGE:
|
||
|
|
||
|
Don't forget to "chmod +x Nroff" in whichever directory you've placed
|
||
|
it. You may also have to enter the "rehash" command before trying it.
|
||
|
|
||
|
To run it from inside "vi", follow essentially the same instructions as
|
||
|
for "fmt", ie., place your cursor at the beginning of the paragraph you
|
||
|
wish to format. The paragraph is delimited by empty lines. Enter:
|
||
|
|
||
|
!}Nroff
|
||
|
|
||
|
and you'll get a more-or-less perfectly formatted paragraph, including
|
||
|
hyphenation where needed.
|
||
|
|
||
|
You may pass parameters to "Nroff" in the form of "nroff"
|
||
|
dot-commands. For example, if you want a shorter line-
|
||
|
length, as exemplified in this paragragh, specify the new
|
||
|
line-length as follows:
|
||
|
|
||
|
!}Nroff .ll 60
|
||
|
|
||
|
Any "nroff" command (that I can think of and have tested) can be used.
|
||
|
The common ones with no arguments are handled, as you can see in the
|
||
|
"Nroff" script above, and all others are assumed to have exactly one
|
||
|
argument. You can not use any "nroff" dot-commands with more than one
|
||
|
argument, altho in common "vi" use you shouldn't need any.
|
||
|
|
||
|
For example, I have re-formatted one of my above paragraphs with right-
|
||
|
justification, line-length 65, and indentation of 5.
|
||
|
|
||
|
My version appears to have a bug in handling an ellipis
|
||
|
(...) so I left that line out of this version. As you can
|
||
|
see, it also attempts to handle "Mr. Smith" correctly, but
|
||
|
naturally will fail if "Mr." is the last word on the sen-
|
||
|
tence. It also attempts to handle periods within quotes, so
|
||
|
that, eg., "These are my words." will be treated as a sen-
|
||
|
tence, with two spaces after the ending quote.
|
||
|
|
||
|
That was performed with the command:
|
||
|
|
||
|
!}Nroff .ad .ll 65 .in 5
|
||
|
|
||
|
Notice: If you make changes to an indented paragraph like the one above,
|
||
|
remove the indentations before re-running the "Nroff" command. This can
|
||
|
be done by placing the cursor at the beginning of the paragraph, then
|
||
|
entering "<}" until the paragraph is lined up on the left margin again.
|
||
|
Otherwise, your results will be somewhat peculiar. I'm not sure why.
|
||
|
|
||
|
CONCLUSION:
|
||
|
|
||
|
Now, with all the discussions going back and forth about "vi's" ability
|
||
|
or inability to handle formatting, and the FAQ about using "fmt" or some
|
||
|
clone, I have quietly put this little package together for my own use,
|
||
|
and it seems to work fine. This is the first time it's been published.
|
||
|
|
||
|
If you try it, I'd appreciate feedback. Murphy's law being what it is,
|
||
|
I'm almost 100% sure I left SOMEthing out, but we'll see.
|
||
|
|
||
|
--
|
||
|
Alvin "the Chipmunk" Sylvain, alvin@stanton.cts.com, asylvain@felix.UUCP
|
||
|
DISCLAIMER: It's all in fun, folks, no flames intended. IF you're real
|
||
|
nice, I _might_ just let you have my opinion for free!
|
||
|
OBLIGATORY QUOTE FOR THE DAY:
|
||
|
You are afraid to eat your words. There is no need to be. I have eaten
|
||
|
a great many of mine in my time and on the whole I have found them a
|
||
|
most wholesome diet.
|
||
|
-- Winston Churchill
|
||
|
|
||
|
|