Live data from Hacker News

The Traditional Vi (2007)

ex-vi.sourceforge.net

41–50 of 61 posts

Re: The Traditional Vi (2007)

#41
post #20

I was just talking about a fun and largely forgotten feature of Joy+Horton vi elsewhere. * https://mastodonapp.uk/@JdeBP/116793159030149624 You can see it here in Ritter vi on lines 83 et seq. of ex_vis.h . vi actually has three flavours of its 'open' mode, for cursor addressable video terminals, non-cursor addressable video terminals, and actual paper terminals. There's an as-yet unfilled niche for the retrocomputer…

What is open mode?

Fortunately, I don't have to write up an explanation of this, as Joy and Horton already did.

* https://ex-vi.sourceforge.net/viin/paper-7.html#section53

It's basically the answer to the question of how one does vi-like visual editing when the cursor cannot be moved to arbitrary locations on the terminal, or sometimes cannot even be moved upwards.

Amusing factoid: It's actually sort of the other way around. open mode was added to ex before visual mode was. visual mode is the answer to the question of how you can take advantage of an ability to move the cursor around arbitrarily.

* https://www.oreilly.com/library/view/learning-the-vi/1565924...

VIM and STEVIE never implemented it. VIM makes :open do the same as :visual . nvi and nvi2 issue a 'not implemented' error for the :open nex command. Watcom vi does not even have :open . Nor do NeoVIM, nextvi, neatvi, and viless.

Mortice Kern vi has open mode. So does elvis version 2.

Re: The Traditional Vi (2007)

#42

I wish elvis was still around. I don't want everything vim has but I like syntax highlighting and other conveniences

Is still around, at least for some values of "around". Elvis, at its latest release (2.2.0) is a required part of Slackware, part of the A (essential system) package series. I have it installed on my system, alongside Plasma 6.7 and kernel 7.1.

I suppose, but you can only install it via the AUR or nixpkgs on linux, and 2 out of the 4 BSDs no longer have ports. Sure, you can compile from source but when it's that old I consider such a state effectively no longer around

Re: The Traditional Vi (2007)

#43

Earlier quoted context omitted.

Use smaller window

Use phone horizontally. Much more practically, the best designs are the ones who don't demand of the user they be consumed in a single form across every scenario.

Horizontal phones haven’t been practical for a while. The weight balance is off and you are forced to use it two handed. You’ll look like a toddler.

Re: The Traditional Vi (2007)

#44
post #40

I learned vi back in the day and have never really graduated to vim. My favorite features are the ranges on the commands (like substitute or delete), piping the buffer into the bottomless utility of the classic UNIX command line, and the . do again command. About the only vim feature I use today is being able to navigate while entering text, but even after all this time, that is not automatic to me. I have used synta…

Any interesting reading on the second paragraph?

I can't think of any, but I can share some examples.

When shredding things like log files, or raw data file, being able to do things like:

  :g/bad line/d
To delete all of the "bad lines". When manually paring down some files, you can use `ma` to do "Mark A" (vs `mb`, which is Mark B). So, I can be scrolling through the file, do the mark when I get to the top of a garbage section, and page or scroll or search to the next "keep" section, and then do `d'a` which means "delete to A", and so it removes all of the stuff I've skipped through.

Doing simple things like:

   !Gformat (! to shell out, G for "the entire buffer", format is the program)
Which runs the entire buffer through the `format` command to wrap paragraphs. I don't necessarily need that feature in my editor, I have a utility that I can use instead.

Of course, you can use `!'a` to a mark. or `!/thing` to run current line to the next "thing" (use `?` for previous).

Banging to utilities is a nice way to develop a pipeline, you basically get to see stuff step by step. So instead of:

    grep thing file | cut -f 1 | sort 
You can vi the file, `!Ggrep thing`, "Yup!", `!G cut -f 1`, "Ok!", `!G sort` and easily see the intermediate steps. (Not recommended on enormous files, since the entire region is replaced.)

The `.` is great for `/word` to find a "word", `cwnew-word`, and apply it selectively. `n` to "search next", and it you like it, `.` to do the `cw` again. Otherwise, keep using `n` until you find the one you like.

And I have no problem running a chunk through a bang command to see what's what, only to just `u`ndo it. (With modern `vim`, you can undo that all the way back to the start if you're doing that pipeline thing.)

And, I would routinely do something like:

  ma$%:'aw/tmp/x.x!vi other.txt then /wherever, :r /tmp/x.x
Mark A, `$` to EOL, `%` to closing brace (imagine a C function header), write from mark A to current line to /tmp/x.x, `!` to shell out to a new `vi` session, then read in the snippet.

Old school, single session, copy and paste. My /tmp is scattered with x.x, x.y, x.1, etc. files.

Along with regex replaces, this is 95% of how I use `vi`. I'm sure there's a bunch of other features, especially in `vim`, but these few bits are flexible and powerful enough to cover my needs. Since I haven't really been found "wanting", I'm not really "looking".

And it started because `vi` was a singular common denominator across all of the disparate UNIX minis I used to work on, so I just managed to work with what was available wherever I went.

Re: The Traditional Vi (2007)

#45
post #15
post #5

:x is a vim feature, so this wouldn't support it, so you'll have to use :wq instead.

Incorrect. :x is a vi feature, that was introduced by Mary Ann Horton to actual Joy+Horton vi in February 1980. * https://code.illumos.org/plugins/gitiles/illumos-gate/+/refs... Ritter's vi is derived from Joy+Horton vi. Illumos has the original.

Fascinating! I wonder what fork of vi I landed on that didn't have :x for me to have mis-picked-up that bit of trivia.

Re: The Traditional Vi (2007)

#46

I learned vi back in the day and have never really graduated to vim. My favorite features are the ranges on the commands (like substitute or delete), piping the buffer into the bottomless utility of the classic UNIX command line, and the . do again command. About the only vim feature I use today is being able to navigate while entering text, but even after all this time, that is not automatic to me. I have used synta…

On the rare occasions that I encounter non-Vim vi clones, I quickly run into missing features like these:

- deleting past the insertion point in insert mode

- visual mode

- split screen

- multiple buffers

- text objects

- macros

So even for people who don't care about Vim's syntax highlighting or autocomplete features, I'd assume real vi is a non-starter. I'd choose it over nano (no offence), but still.

Re: The Traditional Vi (2007)

#47

Earlier quoted context omitted.

Use phone horizontally. Much more practically, the best designs are the ones who don't demand of the user they be consumed in a single form across every scenario.

Horizontal phones haven’t been practical for a while. The weight balance is off and you are forced to use it two handed. You’ll look like a toddler.

Just as impractical as expecting the user to use tiny windows on a 32" ultrawide. It's a literal example of "telling the user they are holding it wrong" being the wrong approach to the problems.

Re: The Traditional Vi (2007)

#48
post #41

Earlier quoted context omitted.

What is open mode?

Fortunately, I don't have to write up an explanation of this, as Joy and Horton already did. * https://ex-vi.sourceforge.net/viin/paper-7.html#section53 It's basically the answer to the question of how one does vi-like visual editing when the cursor cannot be moved to arbitrary locations on the terminal, or sometimes cannot even be moved upwards. Amusing factoid: It's actually sort of the other way around. open mode…

Huh. So in open mode, ex basically works as if ed appended "p" to every text-editing command? Combined with "list" and "number" options, that sounds like a much more pleasant to use version of ed, even on a dumb "glass-tty".

Re: The Traditional Vi (2007)

#49
post #41

Earlier quoted context omitted.

What is open mode?

Fortunately, I don't have to write up an explanation of this, as Joy and Horton already did. * https://ex-vi.sourceforge.net/viin/paper-7.html#section53 It's basically the answer to the question of how one does vi-like visual editing when the cursor cannot be moved to arbitrary locations on the terminal, or sometimes cannot even be moved upwards. Amusing factoid: It's actually sort of the other way around. open mode…

I mostly used it when I logged in over a 1200 baud modem. The terminal would have supported working full-screen, but it was just quicker to not keep the entire screen visible all the time (even though classic vi is already very efficient about screen updates).

Re: The Traditional Vi (2007)

#50
post #41

Earlier quoted context omitted.

Fortunately, I don't have to write up an explanation of this, as Joy and Horton already did. * https://ex-vi.sourceforge.net/viin/paper-7.html#section53 It's basically the answer to the question of how one does vi-like visual editing when the cursor cannot be moved to arbitrary locations on the terminal, or sometimes cannot even be moved upwards. Amusing factoid: It's actually sort of the other way around. open mode…

Huh. So in open mode, ex basically works as if ed appended "p" to every text-editing command? Combined with "list" and "number" options, that sounds like a much more pleasant to use version of ed, even on a dumb "glass-tty".

It is more like a one-line visual mode, you can actually use the same commands as there. Depending on terminal capabilities (that's why there are apparently three submodes), you can move the cursor left and right, and insert and delete text. IIRC, I once somehow got it in a very limited "dumb terminal" mode, and it printed \ for every deleted character.
Post reply on HN