[HN Gopher] 20 Years of Vim
       ___________________________________________________________________
        
       20 Years of Vim
        
       Author : mpereira
       Score  : 168 points
       Date   : 2023-08-12 13:02 UTC (9 hours ago)
        
 (HTM) web link (www.contextualize.ai)
 (TXT) w3m dump (www.contextualize.ai)
        
       | rc00 wrote:
       | Can we do the same thing for X11? (Turn it into something new
       | while maintaining its spirit.)
        
         | pmoriarty wrote:
         | Of course. All you have to do is find people willing to do the
         | work.
        
       | zabzonk wrote:
       | for me, it is more like "40+ years of vi". vim is simply the best
       | version of all of the vi-based editors that i have used, across
       | many platforms. vim is brilliant (and i am very sad to hear of
       | the author's death), but i think we really owe it all to bill
       | joy.
        
         | pydave wrote:
         | Vim's addition of .vimrc and .vim allowing you to store editor
         | programs to further accelerate your editing makes stand vim far
         | beyond vi.
         | 
         | Credit Bill Joy for the modal editing paradigm, but vim is so
         | much more than that. Most editors have a vi mode, but they
         | don't compare to vim because they are awkward to script and
         | don't have _powerful_ regular expressions so readily available
         | (both introduced in vim).
         | 
         | We could thank Ken Thompson and Dennis Ritchie for enabling vi,
         | but I thank Bram for keeping vi viable, portable, and well-
         | supported across languages.
        
           | zabzonk wrote:
           | not sure thompson or ritchie ever used vi, or really enabled
           | it. it is quite similar to the text editors on vax.
        
         | bluenose69 wrote:
         | Same for me: vi (later vim, later neovim) since the late 1970s.
         | I used ed in the early days, too, and that may be why I love
         | the fact that vi* lets me type ":" to do powerful things.
        
           | zabzonk wrote:
           | i had to teach a C programming course that used ed as the
           | editor because i could not at the time get vi/ex to work
           | because of terminfo/termcaps and other problems (which i
           | later fixed). also bourne shell. students, who were on a
           | basically business oriented IT course in about 1985 (?) never
           | complained.
           | 
           | try inflicting something like that on people now, though it
           | might be good for them.
        
       | kazinator wrote:
       | Vim goes back to 1988, publicly released in 1991.
       | 
       | I've been using it for 29 years now.
       | 
       | The last 20 years don't mean anything; the Vim codebase is too
       | much of a dumpster fire for anything significant to happen in
       | that time span.
       | 
       | They had to fork an entire parallel command set to implement
       | "location lists" (new in Vim 7, I think) which are exactly like
       | the "quickfix list". Most of the difference are that location
       | list commands start with l, wheras quickfix list commands start
       | with c. Your keybinding to go to the next quickfix item doesn't
       | work in a location list because it uses :cn^M, but the location
       | list wants :ln^M or whatever. The only explanation for this
       | ridiculous state of affairs must be that it was too difficult to
       | extend quickfix lists to do the things that location lists do.
       | Once you get into the Vim codebase, that will not be surprising.
       | 
       | Vim's visual editing semantics assumes that you have a block
       | cursor, and that that the character covered by the cursor is
       | included in a visual selection. This is not so nice when you
       | switch your terminal to an I-beam (or vertical line) cursor,
       | which references between characters. If the cursor is to the left
       | of the selection start, it includes the character to the left of
       | the cursor too. I-beam semantics allows for a zero-length
       | selection, whereas in block semantics, there is always at least
       | one character in the selection, which is the one under the
       | cursor. I-beam semantics is virtually what pretty much all GUI
       | editors do, including the text widget in Firefox I'm using now to
       | type this.
       | 
       | A bunch of years ago I looked into what it would take to have a
       | flag in Vim to flip to I-beam semantics for selection. Gack! I
       | estimated a month of full time work. Numerous places in the code
       | would have to change in ways where you're not sure what side
       | effect they will have elsewhere.
        
         | lachlan_gray wrote:
         | You could maybe switch to a block cursor when you're in visual
         | mode with
         | 
         | let &t_SI = "\e[6 q" and
         | 
         | let &t_EI = "\e[2 q"
         | 
         | in some auto commands to sort of address this
        
         | pydave wrote:
         | > Your keybinding to go to the next quickfix item doesn't work
         | in a location list because it uses :cn^M, but the location list
         | wants :ln^M or whatever.
         | 
         | Navigating quickfix and location lists is global, so a single
         | common command wouldn't make sense (you can use `:cn` from any
         | window -- even if the quickfix is not visible). However, you
         | could use a `<buffer>` map to use the same key to navigate
         | _within_ loclist /quickfire windows.
         | 
         | > The only explanation for this ridiculous state of affairs
         | must be that it was too difficult to extend quickfix lists to
         | do the things that location lists do.
         | 
         | Their entire concept is to be what quickfix isn't: instead of a
         | global list, it's a list that's tied to a window. I can't think
         | of features that a loclists have but quickfix doesn't unrelated
         | to their nonglobal nature.
         | 
         | I can't claim vim's code is easy to understand, but this is not
         | a fair complaint.
        
       | bongobingo1 wrote:
       | Would like to see this with the #lines/changes per commit. Its
       | obvious that there are more commits post neovim, but i wonder if
       | they're more substantial or just a change in work flow (eg:
       | previously 1 commit with 3 lines, later 3 commits with 1 line
       | each).
        
         | pawelduda wrote:
         | After neovim was released, I could feel the pace pick up,
         | subjectively
        
           | loeg wrote:
           | Neovim allowed innovation that vim initially stifled, and its
           | success motivated Vim to catch up. I think the fork has been
           | good for Vim.
        
           | Icathian wrote:
           | I wonder why that is. Just a bigger tent, with some of the
           | benefits being committed back to vim? More pressure to bring
           | in features from neovim pushing the pace faster? I'd be
           | curious to hear an explanation if anyone has one.
        
             | pawelduda wrote:
             | IIRC there was pushback from vim devs to implement async,
             | so neovim did it. Shortly after async also made it to vim
        
               | xwdv wrote:
               | Just goes to show when devs push back, push harder.
        
       | im_lince wrote:
       | great tool ever
        
       | VectorLock wrote:
       | I had a subtle bit of wistfulness every time I fired up vim for
       | the first time every morning this week.
        
       | I_am_tiberius wrote:
       | I love vim and neovim but I wished there was an easier way to
       | define the config.
        
         | crickey wrote:
         | :e $MYVIMRC Your welcome
        
       | wodenokoto wrote:
       | > The hard work from maintainers turned Vim into a completely new
       | editor
       | 
       | In what ways has vim become a completely new editor?
        
         | webnrrd2k wrote:
         | In an editor-of-theseus way? At least that's how I took it.
        
       | [deleted]
        
       | pxc wrote:
       | It's impressive to me how much Vim's development has continuously
       | accelerated throughout the lifetime of the program so far. We
       | might think of it as an 'old-fashioned' tool, but it has really
       | flourished and grown a lot on the last several years.
        
       | amelius wrote:
       | Is anyone keeping track of what the most popular Vim commands
       | are?
       | 
       | Personally, I've been using Vim for years, but I must confess
       | that I use almost the same commands as I did in the beginning. Is
       | there any good website that teaches useful tricks, maybe on a
       | daily basis?
        
         | JNRowe wrote:
         | I really can't recommend Drew Neil's resources enough. The
         | vimcasts1 series are great if you're the sort of person who
         | likes videos to learn with, and both his books are excellent23.
         | [The books may _appear_ to be getting a little long in the
         | tooth, but their contents are still very applicable to today 's
         | usage.]
         | 
         | My own "trick" for improving my vim usage was to start mapping
         | things to <Nop> that have better replacements, it is a great
         | way to shock yourself out of bad habits like hjkl movements or
         | reliance on /. Then again, I think text-objects and the items
         | below it in motion.txt are the _main_ to use vim so YMMV.
         | 
         | 1 http://vimcasts.org/
         | 
         | 2 https://pragprog.com/titles/dnvim2/practical-vim-second-
         | edit...
         | 
         | 3 https://pragprog.com/titles/modvim/modern-vim/
        
           | amelius wrote:
           | Thanks! Now I'm curious what is bad about hjkl movements :)
        
             | JNRowe wrote:
             | I perhaps shouldn't have said "bad," as my opinions _sadly_
             | aren 't universal truths ;)
             | 
             | However, my reasoning is the same as noted in echelon's
             | reply. There are often far better ways to move around as
             | described in ":h text-objects" and ":h motion.txt" more
             | generally.
        
             | smackeyacky wrote:
             | So am I. Not all terminals actually had cursor keys.
        
             | fortunateregard wrote:
             | https://github.com/m4xshen/hardtime.nvim
             | 
             | https://github.com/takac/vim-hardtime
        
             | echelon wrote:
             | You tend to overuse arrow key-like navigation instead of
             | developing chords of movements.
             | 
             | I got stuck in that suboptimal mode and had to break myself
             | of it.
        
       | bashgordon wrote:
       | So... How do we help children in Uganda?
        
         | simonjgreen wrote:
         | Bram founded ICCF Holland https://en.m.wikipedia.org/wiki/ICCF_
         | Holland#:~:text=Vim%20i....
        
         | mpereira wrote:
         | Check out `:help uganda`.
        
       | xnx wrote:
       | Cool tool! I had to double check because I thought Vim was much
       | older. Indeed, Vim goes back to 1991
       | (https://en.wikipedia.org/wiki/Vim_(text_editor)). This is a
       | great view of the last 20 years of Vim.
        
         | mpereira wrote:
         | Thanks! I just added a hopefully-clarifying comment before the
         | chart based on your comment.
         | 
         | > This chart shows the last 20 years of development as seen in
         | the Vim git repository.
        
         | daveguy wrote:
         | And to be thorough... The original vi mode of text editing goes
         | back to 1976.
         | 
         | https://en.m.wikipedia.org/wiki/Vi
        
         | loeg wrote:
         | Right, this is just the history after moving to git. Hence
         | starting with Vim 6.x and 0 git commits.
        
         | rangerelf wrote:
         | Vim in '95 was a breath of fresh air: improved feature set over
         | plain vi and still zippy.
        
           | pmoriarty wrote:
           | There were a bunch of other vi alternatives back in that day.
           | vim was just the one that wound up becoming the most popular.
           | 
           | nvi and vile were two names that spring to mind, but I know
           | there were others.
           | 
           | Looks like vile itself started in 1992:
           | 
           | https://invisible-island.net/vile/
        
             | orhmeh09 wrote:
             | nvi came standard on FreeBSD at least through 5.x, iirc.
        
       | mpereira wrote:
       | I used data from the Vim git repository to create an annotated
       | chart of some of the main moments in the last 20 years of Vim
       | development.
       | 
       | Vim was the first text editor I've ever used (back in 2008), and
       | it shaped the way I interact with computers forever. I'm grateful
       | to all maintainers, and to Bram for creating it and shepherding
       | it through all these decades.
       | 
       | The annotations are interactive, so if you hover them you'll see
       | more context about the events.
       | 
       | I built the tool to make this visualization:
       | https://www.contextualize.ai
        
         | mekster wrote:
         | > Vim was the first text editor I've ever used (back in 2008)
         | 
         | How could anyone skip any other more "normal" editors and jump
         | right into Vim?
        
           | mpereira wrote:
           | I'm weird, I started using computers with Arch Linux and Vim
           | :P
        
           | berkes wrote:
           | I was thrown into vi, back in 1996, learning Linux. It was
           | the default (or at least available) and the SuSE manual that
           | came with the CD-ROM box had a chapter on vi/vim.
           | 
           | For me it was my first editor on Linux. Didn't stick until I
           | rediscovered it some 20 years ago when I got fed up with the
           | netbeans nonsense and gedit and Kate kept breaking on me.
        
           | [deleted]
        
           | rangerelf wrote:
           | What was a "normal" editor in '08?
           | 
           | After trying out finger-twister with Emacs, vim was a breath
           | of fresh air, and had better features than plain "vi", like
           | it was improved or something.
           | 
           | Now, how do I save and exit?
        
             | loeg wrote:
             | Notepad++ (Windows, 2003) / gedit (GNOME, 1998) /
             | kwrite/kate (KDE, 2001) all existed in 2008 and are totally
             | fine basic text editors for source code. I remember editing
             | PHP in a more obscure editor (SciTE, 1999) on Windows in
             | the early 2000s.
        
               | rangerelf wrote:
               | Most of all those are gui based, when running a small
               | Slackware setup without X none of those are available.
        
               | rob74 wrote:
               | You might be surprised to learn that the original version
               | of Vim (on the Amiga: https://www.reddit.com/r/amiga/comm
               | ents/l5j53m/the_text_edit...) was a GUI based
               | application! Ok, it didn't have much in the way of an
               | actual GUI, but it ran in a window which wasn't the
               | shell/CLI window. I guess the actual reason why Vim is a
               | console application on Linux is the lack of a "standard"
               | GUI framework.
        
               | loeg wrote:
               | > I guess the actual reason why Vim is a console
               | application on Linux is the lack of a "standard" GUI
               | framework.
               | 
               | gvim (for GTK/Gnome) is an official part of vim!
        
               | IshKebab wrote:
               | How many people's first experience of computers is a
               | small Slackware setup without X? This thread is
               | hilarious.
        
               | loeg wrote:
               | They're all GUIs. Most people using computers in the late
               | 2000s were using GUIs, not X-less Slackware. You asked
               | what "normal" was -- this is normal.
        
               | eimrine wrote:
               | Using GUI doesn't mean not using CLI.
        
               | loeg wrote:
               | This is not responsive to my comments.
        
             | jodrellblank wrote:
             | https://en.wikipedia.org/wiki/Comparison_of_text_editors
             | 
             | Sort by creation date, notepad, kedit, kwrite, notepad++,
             | Scite, and plenty more.
        
           | bee_rider wrote:
           | When do most people use text editors? I think wouldn't be
           | that surprised if somebody fist used a text editor when they
           | first got into Linux or programming.
        
             | sodality2 wrote:
             | I'd imagine most people's first impression would be Notepad
             | on windows- I wouldn't count Word or even WordPad.
        
               | kingkongjaffa wrote:
               | It was definitely notepad to edit some obscure .ini files
               | on some pc game, or reading a Readme on a cracked/pirated
               | game. On windows that would be the obvious case.
               | 
               | Downloading something over limewire or torrent and seeing
               | a readme file for the first time is a pretty strong
               | memory.
               | 
               | My first IDE was visual studio writing Visual Basic, I
               | quickly binned that for netbeans and Java and then I
               | think ended up using Eclipse.
               | 
               | Today I'm a casual evil mode emacs user mostly for magit
               | and org-mode. also working in VScode for web languages.
        
               | bee_rider wrote:
               | I bet you are right.
               | 
               | But, I also think there's enough leeway in the idea of
               | "using a tool" to not be surprised that somebody doesn't
               | count a one-off use of notepad. And I think there must
               | exist at least some people who really never used notepad.
               | 
               | Nowadays I only assume someone between, like, 30 and 50
               | will inherently have to have used Windows at some point.
               | Outside that range, you might get graybeards who were
               | around before Windows, or younger folks who only ever
               | used smartphones.
               | 
               | Anyway, all that rambling is to say, I'd put it in the
               | "most but not shocking to hear otherwise" category.
        
               | Eddygandr wrote:
               | Do you really think people younger than 30 won't be using
               | Windows in school or at home?
        
               | xwdv wrote:
               | They will use it, but they don't know it's Windows or
               | what an OS is. They'll just say it's a Microsoft computer
               | or PC. Or "not Apple". Maybe even Android.
        
               | [deleted]
        
               | bee_rider wrote:
               | I mean, there exist and have always existed people who've
               | never used it at home. And there exist and (ever since it
               | came out) have existed people who have.
               | 
               | What I've tried to express is that there's a small band
               | where not having used it is unusual and surprising, and
               | that isn't the case anymore. I still think the majority
               | of people have used Windows at least a handful of times
               | but hearing that somebody hasn't no longer produces a
               | "how could anyone" sort of response.
        
           | mattl wrote:
           | Like what? ed?
        
             | cristoperb wrote:
             | I think they probably mean a non-modal visual/screen editor
             | (like NotePad on Windows or TextEdit on Mac). I used pico
             | on Unix before learning vi, for example, which is probably
             | a common progression.
        
         | lcnPylGDnU4H9OF wrote:
         | > The annotations are interactive, so if you hover them you'll
         | see more context about the events.
         | 
         | It would be helpful to put this somewhere on the page. On
         | mobile especially one isn't likely to accidentally discover
         | this with random mouse movements.
        
       | jes5199 wrote:
       | that's fascinating and to me, because as a vim user since 1998, I
       | haven't really consciously noticed it changing much.
       | 
       | If I tried running a version from 20+ years ago, today, would it
       | still work on a modern O/S ? Are there modern vim features that I
       | would miss?
        
       ___________________________________________________________________
       (page generated 2023-08-12 23:00 UTC)