Shared publicly  - 
It's interesting to see how short memory is. I was looking at this article today about Vim's 20th birthday, and thought, "It isn't really Vim's 20th birthday. It's a lot closer to its 35th!" Because of course, vim is really just an extended and improved version of the venerable vi, the first screen-oriented editor for Unix.

While the article starts out with a history of vi, it somehow treats it as if it were a grandparent, rather than the template for what remains. The core design of vim reflects the design insights of Bill Joy, not those of Bram Moolenaar, who refined and updated them.

I find the same kind of historical revisionism about Linux and Unix. For all practical purposes, Linux IS Unix, the system designed by Ken Thompson and Dennis Ritchie, the system whose "architecture of participation" led to the first collaboratively developed operating system, of which Linux is an implementation. Linus Torvalds did a magnificent job of bringing Unix to its current level of success, but let's not forget the people who originally designed it.

It's important to distinguish between software that is a descendant of another piece of software, as say, Unix was a descendant of Multics, or Java of C, and software that is literally a version (albeit an improved version) of what went before.

I remember working with +Linda Lamb on the first edition of our book Learning the Vi Editor (now Learning the Vi and Vim Editors ) back in 1986, when Vi was already a decade old. The intro I wrote for the original edition still survives, though it's been rewritten half a dozen times.

The original version of that introduction more clearly reflected my joy in discovering vi, it's seemingly arcane interface that actually turned out to be a marvel of design, so perfectly adapted to the needs of text editing that I have yet to find a better tool for the job. I celebrate Bram Moolenaar's update to Vi, but I celebrate even more deeply Bill Joy's original creation.
Stefan Giesen's profile photoDennis McCunney's profile photoGeoff Clare's profile photoPaul Fullilove's profile photo
In the world of vi using jokers, what comes down must go up.
+Kevin Hutchinson - Actually, I think the spirit of Tim's message is that when you're discussing the age of Vim you should :1,$s/vim/vi/g
As a newish vi user, I wish vim happy birthday.
I love Vim. vi was an awesome editor, and the Vim implementation added a LOT of polish. The two are similar enough that if you know how to use vim and have never used vi, then vi will feel a little clunky at first but you will get the hang of it quick enough to make do until you get used to it.

If you have used vi, but not vim, then your first experience with vim is likley to be very pleasant. :-)

Even from the beginning though, Vim was intended to be an improved version of vi, and not a whole new editor. In fact, the name Vim is actually an abreviation of sorts for Vi Improved. :-)
Great comments on Historical Revisionism. I attempted to correct/ edit a picture of Linus as Superman to include Ken Thomson and Dennis Ritchie as the real heroes.
It was a decade ago that I was introduced to Vim as a programmer. I still have the Vim commands cheatsheet :). I did Java programming on Linux platform using Vim, when there were scores of swanky Java IDEs available for Windows. I never missed them. Power to Vim!
well nano is far easier to work with than vim was which was crazy button pressing and nano makes so much less annoying easy to remember athough vim has tons of stuff in it for what i can remember haven't use it in long time since i use nano to replace it
+David Kasurak, To me, vim was always much nicer than nano and its clones. I like to remind people that you only have to remember two or three of the keyboard commands to make vim work for you. :-)

The biggest problem with nano etc, is that you can get hozed up real fast working over a questionable network connection. I remember editing conf files from a thousand miles away. vim is much better for that sort of thing.

It also has more customizability. There are plugins for everything. :-)
nano replaces pico, good for text processing
But it's not quite the same as vi, I developed habits that work with nvi but break when I try to use them with vim. sigh
Wouldn't the appropriate comparison for "vi vs vim" be "Linux vs GNU" rather than "Linux vs Unix"? GNU copied Unix, while vim built on vi.
problem is a LOT of people are ignorant of digital history of any sort; I've found in teaching (on and off, mostly off now) in NYC, that a lot of media students never heard of MOOs and MU*, much less usenet, etc. Take 'web 2.0' and its history - without knowing BBS, Fidonet, usenet, IRC, etc., you're kind of lost, at least if you're trying to plumb the depths of history. on the other hand a lot of students feel, I think, that the older history just doesn't matter at this point - only, say, the past 2 or 3 versions of something
+Dave Neary Well first of all "copy" leaves a bad taste in my mouth for obvious reasons embedded in your post. Also GNU and Linux are interdependent in that each can do nothing with out the other or a different option like GNU/Hurd. The article attempts to compare greater Unix OS with X Linux disro. This is not far from common usage.
I am new to use vi editor, I am using it to write perl programs as I am a programmer, I really like to work on vi and perl. I try to grasp as much commands as possible,
Love you vim, Love Linux....
+Alan Sondheim For the technologies that I will call "intermediaries" you might be correct as I admit I do not care about most of them but for something so foundational as Unix and Vi... Well we would be just as well to throw out the Einstein theses as well.
It must have been 30 years ago when I found myself sat in front of my first Unix workstation thumbing through the online vi manual. I still use vim now and it's still the fastest way there is, by a country mile, to edit code.

35 years and still going, not much technology around that can say that.
I have used Gvim for 1 year. And sometimes use vim in the terminal.
+Alan Sondheim: Those who are ignorant of history are doomed to repeat it themselves!

+Tim O'Reilly: I believe we share the same mindset about this, We can expand upon the Linux is Unix statement with a mind experimentation; Say that a software have been badly implemented and the source-code is filled with cruft (Lika say, Easter eggs).

If you have a good specification, you can throw the current codebase out the window and implement the program following the specification, and not telling the end users that you do so.

And if you follow strict discipline that there should not be implemented any extra features (Easter eggs), then when the new implementation is done, most people would say that the program is the same, without the extra “Features” (or they could believe that it has been moved).

In the same way, I would say that Unix is the “specification” for Linux+GNU (+lots of extra good stuff).
Regarding myself and Vi(m) and other textmode editors, well I have not used them a lot myself. And I've like most others in my country, have grown up with windows-environments around me.

I do not remember when I tested Linux the first time, but there were times when there came distros with the computer magazines. I believe I tested Red Hat first. But I never actually used Linux for anything real.

Then I went into the wall, time after time with windows. Luckily there were Ubuntu, an distro meant to be easy to adapt. And easy it was, I found it to be alot easier to use than window!

(But now they are doing that Unity thing, I do not know what distro I should use instead)
I have no problems seeing Vim as an improvement to vi, but seriously, even if the UI ideas behind vi is what makes Vim what it is, it is Vim that makes vi truly usable as a power tool.
I'm still loving vim, especially the quick search and replace and the block copying. I still don't think it is an improvement having to use a mouse in a text editor....
Vim is a good text editor, but nowadays especialy for developing there are much more powerful tools, powerful in editing, powerful in autocompleting, powerful in navigating.. Currently I'm using vim only for small hot fixes on the server. for other cases - it's not that fast as I expect.
Anyway, happy birthday, Vim!
vim FTW! We Ubuntu users quickly learn to install it, as the vi that's included by default is the one that makes your arrow keys all funky. In other words, it's the 21st century version of the original vi. And of course, there's the whole "running vi actually runs vim" thang, too. But it's good confusion, as compared to nasty confusion like dll's...
I was struggling hard with vi at first. But once you get the hang of it it's a brilliant tool to have. Hard to learn, even harder to master. But still one of the most efficient editors. Thanks to the people who developed this and made it even better over the years :-)
I cannot agree with this. By the same logic, Windows is just an extension of PCDOS and Mac OS X is really just BSD (or Next os). Vim is a program unto itself that copied the design principles from the original vi, but that doesn't mean you can't talk about it as a separate entity. That's hardly historical revisionism, new implementations of older technology often pop up and start a life of their own.
And that all makes great sense, too, Sedat, until you start factoring in lawsuits from companies who claim they invented the concepts that everyone else uses. What an ugly, ugly situation where Microsoft has some of its biggest cash flow from Android "violations."
When a post about Vim is on the what's hot section, you know what kind of people use Google Plus.
Regarding "For all practical purposes, Linux IS Unix", that depends on what your practical purpose is. For most users it is probably true, but for developers there are some subtle differences between Linux and UNIX that they need to be aware of if they want their programs to be portable to both. The best known example is probably kill(-1, signal_number) which on Linux systems does not include the calling process in the set of processes that the signal is sent to, but on UNIX systems it does. This difference and others are specified in the LSB standard.
+Geoff Clare wrote "for developers there are some subtle differences between Linux and UNIX that they need to be aware of if they want their programs"

Of course, for developers, there are also subtle differences between Unix and Unix. I think a lot of us remember SysV vs BSD, for example.
+Tim O'Reilly I remember as well, Tim. Using vi for a long time, then some vim, but I mostly used Emacs and even wrote some of entire early books (like the ones on Microsoft C and X Window System) entirely on microEmacs on a PC :-)
I think the lineage of vi and vim should be pretty clear, considering that vim was short for "vi-immproved."
Vi is a game with many combos so many that after 15 years of playing it i am still discovering new ones. By far the most entertaining tool i can play with even when my boss is around.

I loVi it
Happy birthday to <esc> :u
I found EMACS early on in my Unix days on and gleefully discarded Vi ... you can do things with EMACS. ;-)
Still same warning message after 35 years: "Terminal too wide" ;-)
I learned vi back in the 80s, for the same reason I learned WordStar before that. You learned WordStar on old MS-DOS because the editor you preferred might not be available on the machine you had to work on, but WordStar probably was. You learned vi because it would be available on the Unix machine you used, while other things probably wouldn't. Vi came as a rude shock initially, but once I understood the design, it made sense and I gained fluency. (I had emacs available as well, but most of what I had to do was quick, small edits, for which emacs was overkill.)

Vi shared another characteristic with WordStar: it was keyboard independent. Some of the early terminals used on Unix didn't have things like F-keys and arrow keys. No problem: if you had a QWERTY keyboard and Ctrl-key, you could use vi. There was almost as much variation in the early CP/M machines WordStar was developed on, but the same requirement applied.

Vim started on the Atari ST, but has grown far beyond those humble roots, and many Linux distros ship with vim linked as vi. For the uses I make of it, it might as well be the original, as I seldom use any of the additional features. People who prefer the oiginal can get it: vi is open source these days, with a project on Sourceforge:

Vim's author, Bram Moolenaar, is creating a language called Zimbu for writing text editors:
everything once you get used to it, you'll never work with nano again :D
vi is for editing config files emacs is for programming = ) /ducks and runs!!
Just as a clarification, the difference between Linux and UNIX is a certification. Linux being free, no one is going to pay for that. As a result, Linux is officially "UNIX-like". It's not revisionist, it's an artifact of the legal realities of the day.
+Tim O'Reilly if you mention vim's ancestorial beginnings, then I guess I need to chime in about ed which I learned before I learned vi. Back in the dark ages before I saw BSD, I learned ed because I had to work in non cursor environments. After I left that restrictive environment, at work there was a derivitive of the RAND e editor that people were using. It was pretty sweet, but of course when a new piece of hardware or new OS came in the door, the first thing that I had to edit to get to work was the editor, which meant I needed to use ed or, later, vi, to port the code. I have played with vim off and on for years now, but I drop back to nvi in most cases because it, or vanilla vi, have the keystrokes my muscles remember.

Interestingly enough, even though my job is primarily windows product administration these days, I still find myself bringing up cygwin and vi so that I can search or edit files more productively...

I tried nano, joe, and a variety of other editors. I tried learning emacs. I still prefer nvi .
I've been building some new servers out and for the life of me couldn't figure out why I could split the screen. Then I realized that I had vi installed and not vim. Granted, most of the functionality was there, but man, the differences are stark.
+Mace Moneta Not exactly. AT&T spun off the Unix development activities back when as Unix System Laboratories, to placte major OEM customers who were uncomfortable that AT&T, which was selling systems at the time, controlled Unix and would have a leg up in the Unix market. AT&T put Unix at arm's length in consequence. Novell bought USL, and later sold it to the Santa Cruz Organization. But they didn't sell the Unix trademark. That was transferred to OSI, and a series of specifications that became know as Spec 1170 was produced. Anything that could pass those specs could call itself Unix, regardless of origin. One Linux distro did spend the money and effort to pass Spec 1170 and call itself Unix, but that did not translate to market advantage and the distro no longer exists.
+Peter Bennett It depends on what you choose as your starting point. The original design philosophy of Emacs was developed in the Editing MACroS package Richard Stallman did for the version of TECO that ran on MIT's ITS system. But a more valid starting point is probably the first version Stallman wrote in C that embedded a dialect of LISP as the implementation language, and became Gnu Emacs.
+Larry Virden I have Cygwin here. But you can find native Win32 ports of a lot of the standard *nix utilities, and Vim is available in Win32 GUI and console versions, so you don't have to resort to the Cygwin environment to do most of what you wish to do. Look at the MinGM and MSYS projects, and the UnxUtils package.
+Larry Virden So true about the contributions of ed/ex (and the separate lineage of editors that went through sed and awk to perl and from there to more modern "scripting" languages.) It's truly astonishing how persistent some of the early ed/ex tools, like regular expressions, were to become. Genius.
For those of you who extol emacs, I'll simply point out that I started out with emacs, with this wonderful set of keybindings that I inherited from a friend. When I lost access to my account one time, and couldn't get to my rc file, I was helpless. I switched to vi, quickly appreciated it for its power but also its portability - its power was innate, and standard, not added through a bunch of complex Lisp that might be different if I sat down at someone else's keyboard. I never looked back.

It's nice to see so much appreciation for vi here. In the old days, the Emacs partisans came out like Apple partisans do today. (Though even then, vi was actually more popular, though you didn't hear about it as much. I remember back in the early days of Linux, we used to sponsor a vi vs emacs paintball fight at the Atlanta Linux Showcase, and I was always surprised that 2x as many people signed up for the vi team. I wonder what would happen today if there were a vi(m) vs emacs shootout.)
Not that anybody cares, but I'd have to shoot myself with a paintball. If I'm going to be editing for a few minutes, I use vi. If I'm going to be editing longer, it's usually Emacs (+ CEDET ECB).

Still amazed at the number of vi users who don't put location marks in registers, put and yank text, or even start editing a new file without leaving and restarting a new vi session.

Let's hear it for the great tool Less, as well.
+Tim O'Reilly Emacs may be the most powerful editor in the world. But to really make use of it, you have to customize it, and first, you must learn enough to be able to customize it. Once you have, you can invoke emacs when you first log on and use it as your shell, doing everything from within it. But reaching that point can be a challenge, and for many folks it's more trouble than it's worth. Your issues when you lost your preferred .rc file illustrate the problem.

I was a Unix Sysadmin back before Linux existed, and while I had emacs available, I spent most time in vi. What I heeded to do involved editing config files and creating and modifying scripts. Vi invoked fast and had all the power required. Emacs was simply overkill.

If I were spending all day developing software, I might had had a different opinion, and spent all day in emacs.
Joe M.
I started using vi 30 years ago on a berkeley unix system running on a Vax. Previously, I was in a PDP 11 environment (RSX 11M/RSTS) and used an editor called PICO, which sounds similar to EMACS. I never looked back. Vi was easy to learn and REMEMBER. I used it for editing source code and documentation. Today I use vim on my iMac.
+Mace Moneta As I said in an earlier comment, there are ways in which Linux intentionally differs from UNIX (by which I mean the POSIX/SUS standard), such as the behaviour of kill(-1, signal_number). If someone tried to certify Linux as conforming to UNIX® it would not pass The Open Group's tests without making changes to address these differences. The changes would make the system not conform to the LSB standard.
Tim unwittingly uncorked the editor wars - ugh this has gone down on perlmonks like a 1000 times
+Geoff Clare +Mace Moneta My point was simply that anything that passes the specs can call itself Unix, regardless of origin. It deeply amused me that IBM could modify their mainframe OS (considered the opposite of Unix) to conform, and largely did. (There is a Unix subsystem in zOS, though I've been away from the mainframe world since well before it existed and know little save that it exists.)

Agreed on the underlying system level differences between Unix and Linux, and how making Linux conform to the Unix specs would make it no longer conform to the Linux standard, but I can't see why any current Linux distro would. Linux is approaching ubiquity (my wifi router uses an embedded Linux kernel), and being "real" Unix would offer no advantage.
+Jeff Schmitz One of the original Holy Wars(tm) - Is vi or emacs the One True Editor on *nix systems?

It can be fun to debate if you don't take it seriously, but too many folks do.
To paraphrase Einstein "A table, a chair, a compiler and vim; what else does a man need to be happy?"
less > more, vi > any other editor ;)
Joe M.
+Dennis McCunney Could be its the same editor. That machine was running RSTS/E not Unix. Its too long ago for me to remember specifics, but we may have gotten Pico off a DEC app distribution tape. We weren't using Pine, of that I'm pretty sure, but it may have been on the system. Interestingly, as I was Googling Pico I discovered that there are sites where you can download RSTS/E.
This is the text editor one should master just to get one more point of view at the UX of the past )
Once I had two complete days of PL/SQL and Oracle hacking having only VIM & SQL PLus at my disposal.
And it was successful )
+Joe M. I logged time on DEC boxes running RSTS/E, RSX 11M+, and VMS, but the editors I used were SOS and EDT.
(TECO was available, but I couldn't run Video TECO, and the flavor of TECO used lacked the Control-R mode that underlay RMS's ITS TECO emacs implementation.)

And yeah, you can download RSTS/E, but setting up an environment on which you can run it presents a challenge...
vim - my daily used software since many years, thank you all developers of this fine piece of code
Joe M.
+Dennis McCunney Ahhhh! It was TECO that I used NOT PICO. I thought the command set for PICO looked smaller than I remembered. Brain doesn't work as well as it used to. :-)

I couldn't run Video TECO cause I couldn't always get access to a CRT!

No desire to download RSTS, just surprised it was available for download. I pity anyone who still has to support anything running on RSTS after all this time.
To some extent, I agree. As +Tim O'Reilly points out, calling Linux "(a) Unix" is not denigrating to Unix, it's acknowledging its importance (no matter how much some (mostly Free-)BSD weenies complain that Linux is a reimplementation and therefore must not claim such noble ancestry; the same crowd generally refuses to touch vim, because "it's not the original" - as reasons go, that's the dumb one.)

I do find it sightly unfortunately phrased, though. Well, given who's writing, I'll have to suppose it's purposely polemical. '[I] thought, "It isn't really Vim's 20th birthday. It's a lot closer to its 35th!"' - no, Tim, you didn't. You thought, "vim is 20? Wow, that makes vi... 35?!" Which is just as impressive, and would have been just as good an introduction to just the same shoulders-of-giants text, and it would have perfectly set the stage for "celebrat[ing] Bram Moolenaar's update to Vi, but [celebrating] even more deeply Bill Joy's original creation".

What it would not have done is to set the stage as if there were anything wrong with congratulating vim to its 20th birthday, as if this were an attempt to sweep vi and its creator under the table, as if there were any claim that vim was not a reimplementation and extension of vi, as if there was anything antagonistic to be found here.

And it's a shame, because it would have been a much better article without that.
once I by mistakenly hit rm command wrongly, and i loose my valuable scripts(that was the day when i hated terminal a lot),
but I still love linux, terminal and yes "VIM"...
vi RULES!!!!
Happened something similar to me buy it was a perls script that called "rm"...ha ha!, I almost crashed my machine!!! :-) but that happens, its part of the learning curve!!! :-)
If only there was a TableCurve 2D for unix.
+Dennis McCunney It's better to get into the habit of typing rm -i instead of having an alias (or give the alias a different name such as del). With rm aliased to rm -i you get used to rm without -i being interactive, and one day you will get caught out when you're using a different system (or shell) that doesn't have the alias.
I actually prefer emacs over vim every time (and I started working in the IT business on a Sperry 40-terminal-machine with UNIX about 26 years ago, which means I know vi quite well)... ;-)

Nevertheless, vi/vim is a tool I use quite often as well (and for the same amount of time as emacs in case of vi as well). Why do I - being a hardcore emacs user - use vi at all? Simple answer: not every Sun (or other UNIX variant) server I have to work with has the "newer" tools installed, even not to mention emacs... But I mostly use vi just to do some short and quick editing to config files, bug fixing or very short scripting and similar things everywhere where I can't use emacs. For virtually all my other work I use emacs all the time (programming, scripting, mail, time-sheets, calculation, and, and, and ... we are talking about emacs after all. See ;-)

As somebody else mentioned, I log into my work server as well and the first and only command started on that initial shell is actually emacs. Everything else is done in emacs (as it should be). Long startup times? Who cares? I normally just start it once a day. Besides that, on a modern computer (and if you use precompiled lisp files) it starts quite fast as well.
What I really like about vi (not vim!): it's available everywhere. emacs AND vim are not. And if vim is available, normally emacs is available as well - so why should I learn to use the vim enhancements/extensions? There is no use to learn to use an editor which can't do half of the things I do in emacs - and which I can't use on systems where I don't have an emacs... So what's the point?

P.S. Happy birthday vim!
+Geoff Clare I prefer the alias, and being forced to do /bin/rm if I don't want the interactive prompt. If I'm working on another system, the first thing I do is create that alias. I also do things like create distinctive color schemes in PuTTY when I'm SSHed into something. I've been in situations where I had admin status on multiple machines, was logged into more than one at a time, and wanted to be damned sure I was in the right machine when I did something as root.

As for shells, I'm an old Korn shell guy, but Bash is the norm on Linux, and I'm developing a fondness for zsh. I can deal with tcsh if I have to.
+Dennis McCunney Using the rm alias will likely bite you one day. When it does, don't say nobody warned you.

I'm also a long-time Korn shell user (on many different systems, including Linux). With "set -o vi" of course!
I worked at DEC in the seventies where I used vi initially but since I developed on most of the PDP family I gravitated toward Emacs. Also when writing in Lisp for Symbolics genera it was easier for me to do that also in Emacs.
Add a comment...