Vim surprisingly slow?

Next Topic
 
classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

Vim surprisingly slow?

Tim Chase
Taking on the challenge listed here

https://dev.to/jorinvo/csv-challenge-1al

it provides a .json file link to mung into date-named files (never
mind that these happen to all be the same date), I came up with this
vim solution:

:g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
s=substitute(getline('.'), '.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*',
'\1\2\3','').'.txt'|s//\1,\2/|exec ".w!>>".s

which works.  But for some reason, it is *painfully* slow on my
machine.  The basic intent is that it identifies rows with a (fake)
credit-card number, snapshots the YYYYMMMDD.txt filename, then turns
the row into a CSV entry ("name, CC"), and writes (appending) that one
line into the output filename.

The whole thing should happen in a blink. Maybe a second at worst.
But this was walk-away-do-something-and-come-back slow.

If I change the "exec" to an "echo", it's as fast as I expect.

Any idea what might be making the exec so slow?

-tim




--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Christian Brabandt

On So, 12 Nov 2017, Tim Chase wrote:

> Taking on the challenge listed here
>
> https://dev.to/jorinvo/csv-challenge-1al
>
> it provides a .json file link to mung into date-named files (never
> mind that these happen to all be the same date), I came up with this
> vim solution:
>
> :g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
> s=substitute(getline('.'), '.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*',
> '\1\2\3','').'.txt'|s//\1,\2/|exec ".w!>>".s
>
> which works.  But for some reason, it is *painfully* slow on my
> machine.  The basic intent is that it identifies rows with a (fake)
> credit-card number, snapshots the YYYYMMMDD.txt filename, then turns
> the row into a CSV entry ("name, CC"), and writes (appending) that one
> line into the output filename.
>
> The whole thing should happen in a blink. Maybe a second at worst.
> But this was walk-away-do-something-and-come-back slow.
>
> If I change the "exec" to an "echo", it's as fast as I expect.
>
> Any idea what might be making the exec so slow?

No idea and I bet running it under gdb will make it even slower :(

Nevertheless can you try this with a debug Vim and hit <Ctrl>-C

This should give us a clue, which codepath is slow. Please try this
several times, so we are sure, that we hit the slow codepath.

Of course, easier would be to provide a correct profiling information :)

Christian
--
Es gibt erfülltes Leben, trotz vieler unerfüllter Wünsche.
                -- Dietrich Bonhoeffer

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Erik Falor
On Mon, Nov 13, 2017 at 09:33:49PM +0100, Christian Brabandt wrote:

>
> On So, 12 Nov 2017, Tim Chase wrote:
>
> > Taking on the challenge listed here
> >
> > https://dev.to/jorinvo/csv-challenge-1al
> >
> > it provides a .json file link to mung into date-named files (never
> > mind that these happen to all be the same date), I came up with this
> > vim solution:
> >
> > :g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
> > s=substitute(getline('.'), '.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*',
> > '\1\2\3','').'.txt'|s//\1,\2/|exec ".w!>>".s
> >
> > which works.  But for some reason, it is *painfully* slow on my
> > machine.  The basic intent is that it identifies rows with a (fake)
> > credit-card number, snapshots the YYYYMMMDD.txt filename, then turns
> > the row into a CSV entry ("name, CC"), and writes (appending) that one
> > line into the output filename.
> >
> > The whole thing should happen in a blink. Maybe a second at worst.
> > But this was walk-away-do-something-and-come-back slow.
> >
> > If I change the "exec" to an "echo", it's as fast as I expect.
> >
> > Any idea what might be making the exec so slow?
>
> No idea and I bet running it under gdb will make it even slower :(
>
> Nevertheless can you try this with a debug Vim and hit <Ctrl>-C
>
> This should give us a clue, which codepath is slow. Please try this
> several times, so we are sure, that we hit the slow codepath.
>
> Of course, easier would be to provide a correct profiling information :)
I profiled Vim while running this command, but my gprof-fu isn't strong enough
to see the problem. I tried different combinations of old/new regexp engine,
enabling/disabling autocmds, :silent, but these didn't make a discernible
difference.

The gprof logs can be found at http://unnovative.net/json_challenge/,
if anybody smarter than I cares to take a look.

The odd thing that I noticed is that, according to htop, the Vim process spends
lots of cycles in IOWait.

Here's what iotop shows during a typical run:

Total DISK READ :       0.00 B/s | Total DISK WRITE :    1372.27 K/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       2.68 M/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
  304 be/3 root        0.00 B/s    0.00 B/s  0.00 % 80.22 % [jbd2/nvme0n1p2-]
17734 be/4 fadein      0.00 B/s 1372.27 K/s  0.00 %  0.89 % vim -c source slow.vim data.json


That's a lot of writing to my hard disk nvme0n1p2. It looks like Vim thrashing
a temp file somewhere, but I didn't see anything that looked likely under
/proc/$(pgrep vim)/fd, and

         lsof -p $(pgrep vim)

didn't turn up anything that looked out of the ordinary. Just to be sure I also
tried disabling the swap file

        :set noswf

but still, Vim thrashes.

--
Erik Falor
Registered Linux User #445632                    http://unnovative.net

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

signature.asc (169 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Nazri Ramliy
In reply to this post by Tim Chase
On Sun, Nov 12, 2017 at 10:21 PM, Tim Chase <[hidden email]> wrote:
> If I change the "exec" to an "echo", it's as fast as I expect.
>
> Any idea what might be making the exec so slow?

It's vim writing to disk that makes it slow. I ran it on SSD it's
fast, on a spindle disk it's slow. I use fatrace[1] to see the file
create/write/close operations done by vim. So vim is writing to the
file for each line that matches the pattern.

$ sudo fatrace
...
vim(4719): WO /home/nazri/disk/20150425.txt
vim(4719): W /home/nazri/disk/20150425.txt
vim(4719): CW /home/nazri/disk/20150425.txt
vim(4719): CW /home/nazri/disk/20150425.txt
vim(4719): CO /home/nazri/disk
vim(4719): WO /home/nazri/disk/20150425.txt
vim(4719): W /home/nazri/disk/20150425.txt
vim(4719): CW /home/nazri/disk/20150425.txt
vim(4719): CW /home/nazri/disk/20150425.tx
...

nazri

[1] https://launchpad.net/fatrace https://github.com/truncs/fatrace

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Tim Chase
On 2017-11-14 18:57, Nazri Ramliy wrote:

> On Sun, Nov 12, 2017 at 10:21 PM, Tim Chase <[hidden email]>
> wrote:
> > If I change the "exec" to an "echo", it's as fast as I expect.
> >
> > Any idea what might be making the exec so slow?  
>
> It's vim writing to disk that makes it slow. I ran it on SSD it's
> fast, on a spindle disk it's slow. I use fatrace[1] to see the file
> create/write/close operations done by vim. So vim is writing to the
> file for each line that matches the pattern.

Yes, this was on a spinning-rust disk rather than a SSD/NVME drive.
And yes, based on the command, it should be doing an open/write/close
for each line.  However, I'm nigh certain I've done things like this
in the past (whether within vim or things like Bash/Python scripts)
and it's not nearly as painful.  Besides, the OS (Debian in this case)
should be fairly aggressive in caching the recently-used filesystem
metadata, so I'd expect the first open/close to have some reasonable
overhead, but subsequent ones should be coming out of cache, not
directly read off the drive.

Thanks Nazri, Erik, and Christian for investigative work. :-)

-tim


--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Keith Christian-2
On Linux, /tmp is usually a RAMDISK, try that for a speed improvement.

Keith 

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Christian Brabandt
In reply to this post by Nazri Ramliy

On Di, 14 Nov 2017, Nazri Ramliy wrote:

> On Sun, Nov 12, 2017 at 10:21 PM, Tim Chase <[hidden email]> wrote:
> > If I change the "exec" to an "echo", it's as fast as I expect.
> >
> > Any idea what might be making the exec so slow?
>
> It's vim writing to disk that makes it slow. I ran it on SSD it's
> fast, on a spindle disk it's slow. I use fatrace[1] to see the file
> create/write/close operations done by vim. So vim is writing to the
> file for each line that matches the pattern.

So how slow is it, if we skip the `.w >> output` part of the command,
but rather gather the matches in a list?

Christian
--
"Wes Brot ich esse, des Lied ich singe" ist ein Soldatenlied, das
Ludwig XIV. mit Louvois und seinem Beichtvater Tellier gedichtet und
in Musik gesetzt hat.
                -- Klinger, Betrachtungen und Gedanken

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Tim Chase
On 2017-11-14 18:17, Christian Brabandt wrote:

> On Di, 14 Nov 2017, Nazri Ramliy wrote:
>
> > On Sun, Nov 12, 2017 at 10:21 PM, Tim Chase
> > <[hidden email]> wrote:  
> > > If I change the "exec" to an "echo", it's as fast as I expect.
> > >
> > > Any idea what might be making the exec so slow?  
> >
> > It's vim writing to disk that makes it slow. I ran it on SSD it's
> > fast, on a spindle disk it's slow. I use fatrace[1] to see the
> > file create/write/close operations done by vim. So vim is writing
> > to the file for each line that matches the pattern.  
>
> So how slow is it, if we skip the `.w >> output` part of the
> command, but rather gather the matches in a list?

Using this as my test:

:let a=[] | g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
s=substitute(getline('.'), '.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*',
'\1\2\3','').'.txt'|s//\1,\2/|exec "call
add(a,\"".s.getline('.')."\")"

The above makes the following changes:

- initializes "a" to be an empty array

- changes the ".w! >>".s after the exec to a "call add(a,"...")"
  accessing both the filename and the text-line in question

Comparing timings, it's inappreciably different from the "echo"
version, so no major speed issues there.  It seems to be the ".w!>>"
that is the bottleneck.

Thanks again!

-tim




--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Tim Chase
In reply to this post by Erik Falor
On 2017-11-14 00:08, Erik Falor wrote:
> Here's what iotop shows during a typical run:
>
> Total DISK READ :       0.00 B/s | Total DISK WRITE :    1372.27 K/s
> Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       2.68 M/s
>   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>
> COMMAND 304 be/3 root        0.00 B/s    0.00 B/s  0.00 % 80.22 %
> [jbd2/nvme0n1p2-] 17734 be/4 fadein      0.00 B/s 1372.27 K/s  0.00
> %  0.89 % vim -c source slow.vim data.json

I see similar behavior on mine, with iotop reporting 80-90% of the
usage on the home partition of my drive (where I was writing the file
in question).

I started poking around in the vim source, but nothing stands out to
me other than possibly attempting to run autocmds for every ".w!>>"
which might have some sort of amplification factor.

I don't have a good way to see if it's actually (re)reading the
output file (and possibly executing autocmds on it or other vast
labor) every time it appends to it.

The difference between the "exec '.w>>'" case and the other tests is
striking.  The other tests complete in under a second.  Meanwhile,
the version attempting to append the line to the file is taking
*minutes* to write/append ~5000 lines.

-tim



--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Christian Brabandt

On Di, 14 Nov 2017, Tim Chase wrote:

> On 2017-11-14 00:08, Erik Falor wrote:
> > Here's what iotop shows during a typical run:
> >
> > Total DISK READ :       0.00 B/s | Total DISK WRITE :    1372.27 K/s
> > Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       2.68 M/s
> >   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>
> > COMMAND 304 be/3 root        0.00 B/s    0.00 B/s  0.00 % 80.22 %
> > [jbd2/nvme0n1p2-] 17734 be/4 fadein      0.00 B/s 1372.27 K/s  0.00
> > %  0.89 % vim -c source slow.vim data.json
>
> I see similar behavior on mine, with iotop reporting 80-90% of the
> usage on the home partition of my drive (where I was writing the file
> in question).
>
> I started poking around in the vim source, but nothing stands out to
> me other than possibly attempting to run autocmds for every ".w!>>"
> which might have some sort of amplification factor.
>
> I don't have a good way to see if it's actually (re)reading the
> output file (and possibly executing autocmds on it or other vast
> labor) every time it appends to it.
>
> The difference between the "exec '.w>>'" case and the other tests is
> striking.  The other tests complete in under a second.  Meanwhile,
> the version attempting to append the line to the file is taking
> *minutes* to write/append ~5000 lines.

Some more things to try:
Does `:set ei=all` or using `:noa :.w` make a difference perhaps?
Also does it work better if you explicitly use e.g. writefile('', 'a')?

Christian
--
Warum haben einige Trabbis eine heizbare Heckscheibe?
Damit man beim Schieben warme Hände hat.

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Tim Chase
On 2017-11-14 22:15, Christian Brabandt wrote:
> Some more things to try:
> Does `:set ei=all` or using `:noa :.w` make a difference perhaps?

Makes no difference that I could tell.  I ^C'ed it after about 30
seconds in both cases.

> Also does it work better if you explicitly use e.g. writefile('',
> 'a')?

Much faster!

:g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
s=substitute(getline('.'),
'.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*','\1\2\3','').'.txt'|s//\1,\2/|call
writefile([getline('.')], s, 'a')


runs in about the same time as the "echo" version or the "append it
to a list" version (i.e., one second or less).

-tim



--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Christian Brabandt

On Di, 14 Nov 2017, Tim Chase wrote:

> On 2017-11-14 22:15, Christian Brabandt wrote:
> > Some more things to try:
> > Does `:set ei=all` or using `:noa :.w` make a difference perhaps?
>
> Makes no difference that I could tell.  I ^C'ed it after about 30
> seconds in both cases.

Okay, no autocommand comes in the way.

> > Also does it work better if you explicitly use e.g. writefile('',
> > 'a')?
>
> Much faster!
>
> :g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
> s=substitute(getline('.'),
> '.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*','\1\2\3','').'.txt'|s//\1,\2/|call
> writefile([getline('.')], s, 'a')
>
>
> runs in about the same time as the "echo" version or the "append it
> to a list" version (i.e., one second or less).

I am puzzled now. Is that buffer loaded? Perhaps Vim (re-)writes the
undofile or needs to sync the swapfile?

Best,
Christian
--
Alle großen Wahrheiten waren anfangs Blasphemien.
                -- George Bernard Shaw

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Elijah Griffin
In reply to this post by Tim Chase
Tim Chase wrote:
> :g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
> s=substitute(getline('.'), '.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*',
> '\1\2\3','').'.txt'|s//\1,\2/|exec ".w!>>".s
> which works.  But for some reason, it is *painfully* slow on my
> machine.

Just do one write.

:v/"creditcard":"[0-9][0-9-]*"/d|%s!,*"\([a-z][a-z]*\)":!;\1=!g|%s,^{;,,|%s/},*$//|%s,\(timestamp="....\)-\(..\)-\(..\)[^"]*,\1\2\3,|%s!$!;echo '"'"$name"'"'",$creditcard" >> $timestamp.csv!|w ! /bin/sh -

That will probably work in ordinary vi, but my copy of nvi was unhappy.
I didn't try to figure out why. But I did prove to myself it works with
slight editing in ed. ("ed is the standard editor.")

v/"creditcard":"[0-9][0-9-]*"/d
1,$s!,*"\([a-z][a-z]*\)":!;\1=!g
1,$s,^{;,,
1,$s/},*$//
1,$s,\(timestamp="....\)-\(..\)-\(..\)[^"]*,\1\2\3,
1,$s!$!;echo '"'"$name"'"'",$creditcard" >> $timestamp.csv!
w data.json.sh
! /bin/sh data.json.sh

The fix for taking hyphens out of the credit card number should be
obvious, I didn't see any requirement to do that there, so I didn't.

I tried to post my solution to the dev.to site, but it wouldn't let me
log in with Firefox (nothing happened when pushing the github button).
I did not even try to login with lynx.

Elijah

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Tim Chase
In reply to this post by Christian Brabandt
On 2017-11-14 22:41, Christian Brabandt wrote:

> > > Also does it work better if you explicitly use e.g.
> > > writefile('', 'a')?  
> >
> > Much faster!
> >
> > :g/.*name":"\([^"]*\)".*card":"\([^"]*\)".*/let
> > s=substitute(getline('.'),
> > '.*stamp":"\(\d\+\)-\(\d\+\)-\(\d\+\).*','\1\2\3','').'.txt'|s//\1,\2/|call
> > writefile([getline('.')], s, 'a')
> >
> >
> > runs in about the same time as the "echo" version or the "append
> > it to a list" version (i.e., one second or less).  
>
> I am puzzled now. Is that buffer loaded? Perhaps Vim (re-)writes
> the undofile or needs to sync the swapfile?

I'm unsure about what is happening under the covers, but it's
consistent if all I do is

  $ vim -u NONE data.json
  :g/...   " my initial lengthy :g command

with no syntax highlighting, no changes to the default environment.
It's about 5000 lines that get written, based on my rough wall-clock
timing, it's writing about 10 lines/second with the ".w!>>" version.
Meanwhile, the writefile() version is writing closer to 5000
lines/second.

-tim


--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Vim surprisingly slow?

Tim Chase
In reply to this post by Elijah Griffin
On 2017-11-14 19:04, Eli the Bearded wrote:
> Just do one write.

Yeah, I've come up with multiple multi-step solutions and the
solution I came up with *works*, it's just surprisingly slow for
something that can execute in around a second if slightly reworded
(see elsewhere on this thread where Christian recommends using
writefile() instead of ":.w>>")

> But I did prove to myselfit works with slight editing in ed.
> ("ed is the standard editor.")

As the loony who maintains the @ed1conf twitter account, I'm pleased
to see ed(1) popping up as a potential solution to the challenge. :-)

> I tried to post my solution to the dev.to site, but it wouldn't let
> me log in with Firefox (nothing happened when pushing the github
> button). I did not even try to login with lynx.

Yeah, their logins require 3rd-party cookies and JavaScript enabled
for the OAUTH authentication, so I don't often go to the hassle of
logging in there, instead sticking to directly posting/replying on
Twitter.  I can almost guarantee failure in lynx/links/elinks/w3m
without even trying.

-tim



--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.