VIM Q again
Gene Heskett
gene.heskett at verizon.net
Mon Jun 2 04:57:55 UTC 2008
On Sunday 01 June 2008, Cameron Simpson wrote:
>On 01Jun2008 21:26, Gene Heskett <gene.heskett at verizon.net> wrote:
>| On Sunday 01 June 2008, Cameron Simpson wrote:
>| >On 01Jun2008 20:19, Gene Heskett <gene.heskett at verizon.net> wrote:
>| >| So what am I doing wrong when in the command mode, I type
>| >| /s/L1BAE/isspace/&g, or :s/L1BAE/isspace/&g
>| >
>| >What do you think each of the "&" and the "g" do in your line?
>| >
>| >Next. What does:
>| > :s/L1BAE/isspace/g
>| >
>| >do? That's for a single line.
>|
>| which has not done anything here even to a single instance of L1A8E
>
>Um, I should have mentioned that that does only the "current" line.
>Move your cursor to a line with L1BAE and retry.
>
>And it seems I typed "L1BAE" and you typed "L1A8E". Sorry, that will
>have wasted your time. Corrected in the examples below.
>
Mochs Nichs, it worked, and about 450-500 bytes of junk code has now been
removed from a 6k relocatable object. The original coder from 25 years ago was
either fighting with a broken assembler, or somehow used the z-80 as a model
for 6809 code, there was z-80 coding style trash all over it, and strings of
code 10 to 40 bytes long that had an rts or a bra to someplace else above them
with no label, meaning it will never be executed, so why is it there? I can
only guess 25 years after the fact.
Having programed in assembly or even just a hex monitor on the RCA-1802, the
z-80, and the motorola 6809 which hitachi turned into a much smarter 6309, the
1802 is ok but different, the 6809's are 1.5 star genius's, the 6309 is a 2
star, and z-80 I can only describe as drain bamaged.
>| Every line:
>| > :%s/L1BAE/isspace/g
>|
>| The use of the % sign doesn't seem to be mentioned in the :help I have
>| been able to get to.
>
>Maybe not. It's a shorthand for "1,$" i.e. from the first line to the
>
>last line. I see someone else has suggested:
> :g/L1A8E/s//isspace/g
>
>which in this case is semanticly equivalent but internally different.
And that syntax is what I used for the last 4 hours. I'm not done by a long
shot, but this sure helps. If I can get it to build and run exactly as before,
but without all this guys trash, a printout will be a lot more useful in terms
of deciphering what its doing.
>
>It says "for each line (g) that contains L1A8E (/L1A8E/) replace that
>(L1A8E, or more generally: what was matched in the first //) with isspace,
>globally (g: every time it occurs on the line)".
>
>For your task these two things are the same. There are other circumstances
>where the "g/ptn/something" idiom has specific advantages.
>
>| When I figure out what a piece of code is doing, I would like to be able
>| to globally replace the L1A8E label it now carries as an entry point, as
>| found and labeled by our disassembler, with something more in line with
>| what the routine actually does, like "s/L1A8E/printerr/g" which with
>| another editor I use on that machine will globally replace every instance
>| of L1A8E with printerr.
>
>Ok. You might also want to beef up the regexp, thus:
> :%s/\<L1A8E\>/isspace/g
>
>The causes the L1A8E to have "word boundaries" at each end, so that
>FOOL1A8EBAR will not match the regexp. It looks like your disassembler
>generated labels won't have this trouble, but I like to be cautious.
Thanks for the warning, although I did get an example of that while searching
for a marker I had added, 5 dashes forgetting a previous editor had wrapped
some of his comments in ;---------------------- style markers, so I had to
change the search string to -----L which only matched the label I'd marked.
>Cheers,
And to you too Cameron, and thanks for the help.
--
Cheers, Gene
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
No act of kindness, no matter how small, is ever wasted.
-- Aesop
More information about the fedora-list
mailing list