Live data from Hacker News

Understanding the Origins and the Evolution of Vi and Vim

pikuma.com

91–100 of 128 posts

Re: Understanding the Origins and the Evolution of Vi and Vim

#91

Earlier quoted context omitted.

If you can recall, what were the individual assignments? Would love to understand how the modules added up

Now you've got me digging through archives, I've got all the homework assignments stored. I need to find someone with an exabyte tape reader...

If you do find someone I’d love to hear more as well.

Re: Understanding the Origins and the Evolution of Vi and Vim

#92
post #28

Reminded me of CygnusED, which apparently has even a working website[1]. I really wish the core idea of ARexx had become popular enough. 1: http://www.cygnused.de/index-en.php

CygnusED’s speed made it feel unlike any other editor. Brilliant engineering!

Re: Understanding the Origins and the Evolution of Vi and Vim

#93
post #67
post #61

Earlier quoted context omitted.

For people who love vi/vim, it's not really about being "a significantly faster programmer." It's about reducing friction between the changes you want to happen and them happening on screen. Editors with a lot of friction (that make you do lots of intermediate or repetitive steps to accomplish a task) can be really annoying to use. For some people, minor annoyances can be very distracting to the point where they take…

I don't think it's even so much about keystroke count as it is the "commands" are more like a language that you can keep getting better in. For example, from above: > d), d{ That's not two different commands, it's one action (delete) and two different motions (forwards one sentence, backwards one paragraph). Motions work on their own for moving the cursor, but can be combined with different actions and repetitions to…

And these commands are useless for programming unless you format source code in a very specific way, adding white space such that everything is split into "paragraphs" that can be thought of and operated on as a single unit.

As someone down below mentioned, programming is not as much editing text as it is massaging the underlying AST. Proper IDEs (not VSCode) in a hands of a power user who knows what his "hammer" can do (and how to invoke the necessary behaviour) are much more efficient at it compared to any text editor.

Re: Understanding the Origins and the Evolution of Vi and Vim

#94
post #53

Earlier quoted context omitted.

The productivity comes from not having to think about your editing while simultaneously realizing that you can do some complex editing really easily. I use Emacs and Vim both (I prefer Emacs) and It's quite nice when you can streamline some quick code edits. My latest experience with Vim was helping a friend fixing some import with a React Native project. A quick grep on one terminal (I could have used quickfix) and…

Now with neovim I feel like the plugin ecosystem is catching up to Emacs. Lua has unlocked the potential. Typescript dev ex in neovim is light years ahead of what I achieved in Emacs. Neovim’s lsp integration is better than Emacs imo. Blink.cmp is so fast. Magit is definitely far superior to anything in neovim though and so is org mode.

I think Vim and Neovim is better suited as editors, meaning quick launch, fast localization of files and fast editing actions. And I like plugins that support this philosophy.

But the goals with emacs is to be a complete platform for anything plain text (with a bit of extra widgets). Almost whatever you need the terminal for can be replicated there, and they will share some common convention. Mail, file manager, music players, feed readers, PKM, PIM,… Tect editing is not so great, but text actions are (Slime is the best example).

I use both, but I prefer emacs’ extensibility.

Re: Understanding the Origins and the Evolution of Vi and Vim

#95
post #47

Earlier quoted context omitted.

You are absolutely not. In point of fact pretty much everyone hates Lua except the handful of folks integrating it. It has a huge lead in terms of embeddability and performance vs. competitors like Python. So you see it show up in little C applications[1] again and again and again because everything else is just too much of a hassle. But everyone agrees the programming experience in the language is awful. [1] My son…

> But everyone agrees the programming experience in the language is awful. Simply not true. The power to weight ratio of Lua is amazing. You can keep the entire language in your head easily, and even without LuaJIT it’s crazy fast. It’s great for creating DSLs. As a configuration language it is excellent- in fact that’s how Lua originally came to exist.

DSLs and configuration languages aren't "programming experience" though. (Also that's oversold, you should be on a lisp if that's the design goal, Lua is a distant second.)

I stand by what I said. Lua sucks for coding. The only people who like it are ones who haven't mastered one of the "real" environments.

Re: Understanding the Origins and the Evolution of Vi and Vim

#97
post #67
post #61

Earlier quoted context omitted.

For people who love vi/vim, it's not really about being "a significantly faster programmer." It's about reducing friction between the changes you want to happen and them happening on screen. Editors with a lot of friction (that make you do lots of intermediate or repetitive steps to accomplish a task) can be really annoying to use. For some people, minor annoyances can be very distracting to the point where they take…

I don't think it's even so much about keystroke count as it is the "commands" are more like a language that you can keep getting better in. For example, from above: > d), d{ That's not two different commands, it's one action (delete) and two different motions (forwards one sentence, backwards one paragraph). Motions work on their own for moving the cursor, but can be combined with different actions and repetitions to…

> I don't think it's even so much about keystroke count as it is the "commands" are more like a language

It was about minimizing the number of redraws, but this indirectly might have led to fewer keystrokes too.

As you mention later in your comment, there are a lot of motions (which could be combined with deletion too). This is probably related to performance too, because they make it possible to achieve something quite specific like c3), with only a single redraw, and three keystrokes.

The "language" is undoubtedly a very good choice on part of Bill Joy. It wasn't necessitated by the hardware constraints, I believe. The separate modes neither. It's just that he would have wound up with less ergonomic key mappings.

Without the modes we would have to suffer using chorded shortcuts with modifiers, but they could still form a language. Think "M-3 C-d C-)" instead of d3).

Without neither modes nor composition (the "language"), it would have been even worse. A large number of single-purpose shortcuts, likely with multiple modifiers; he would have run out of (memorizable) single modifier combinations.

Re: Understanding the Origins and the Evolution of Vi and Vim

#98
post #4

Side note: that ADM-3A bears such a beautiful design. I like how its curves are akin to the screen curvature.

I bought a used one for my use at home while working on a university degree. And as another comment noted, vi would still be usable with a 300 baud (or 1200, I can't quite remember) modem. You could limit the visible "window" into your file to five lines on screen, so it didn't take so long to refresh. Alas, no longer have the ADM3a (but my kids when younger did use it as a play typewriter for a while).

Re: Understanding the Origins and the Evolution of Vi and Vim

#99

So interesting to see how the ADM-3A keyboard layout itself was such a fundamental influence for ESC and hjkl movement in vi.

And that I suspect originates with ASCII Control-H = backspace (cursor left), Control-J = line feed (cursor down). Control-K and Control-L don't match but weren't so important that they couldn't be repurposed by an early display terminal.

Re: Understanding the Origins and the Evolution of Vi and Vim

#100

Harvard University used to teach an assembly language class back in the 80's, taught on a mainframe - a VAX 11/780 or similar I seem to recall. This was an open enrollment class, available to evening and summer students. That class was, well it as Assembly, so it was difficult. The homework assignments were odd, seemingly unrelated. At the midterm, the professor handed out a makefile that combined every assignment to…

I'm now reminded of an unrelated mini-vi: https://github.com/ioccc-src/winner/blob/master/1991/ant/ant...
Post reply on HN