# What's so great about the vi editor?

**URL:** <https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063>\
**Category:** In My Humble Opinion\
**Created:** [December 13, 2011, 7:33pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063 "2011-12-13T19:33:23Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![yabob](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/yabob/32/2821_2.png) [@yabob](https://boards.straightdope.com/u/yabob)\
**Post date:** [December 13, 2011, 9:28pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/21 "2011-12-13T21:28:22Z")

</div>

> [@Blakeyrat](#):
>
> I would argue that if you’re doing operations like that, you’re using the wrong tool entirely. For example, wouldn’t a spreadsheet be better for tabular data?
> 
> But fair enough, point taken.

Usually, it’s for cases where I have a bunch of output I snitched from someplace in format A, and want to quickly massage into a form to use as input in program B, and I’m just doing it as a one time exercise. Perhaps “A” is somebody’s web page full of data that I want to turn into a CSV to load into a DB table or the spreadsheet you mentioned. Or it’s somebody’s list of something like timezone abbreviations and offsets that I found, and want to munge into the compiler initialized list of time zones recognized by the code I’m writing. Or the 1000 line config file I have for something has to grow a new comma separated field in the 5th place for a new version of the software.

Yeah, as an actual text editor, I’ll use a gui editor. But vi has its place.

---

<div class="post-metadata">

**Author:** ![filmore](https://avatars.discourse-cdn.com/v4/letter/f/7993a0/32.png) [@filmore](https://boards.straightdope.com/u/filmore)\
**Post date:** [December 13, 2011, 9:34pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/22 "2011-12-13T21:34:26Z")

</div>

> [@Blakeyrat](#):
>
> I think you’re making a distinction where none exists. To go back to the Visual Studio example, while it is true that VS probably has (slightly) fewer keyboard shortcuts than VI, it’s still eminently usable without ever touching a menu.

How can you use Visual Studio without the mouse? Aren’t your keyboard shortcuts just Alt shortcut keys that bring up the menus? Like Alt-E Alt-Z which might do something like Edit-\>Zoom?

In vi, the key commands are the command. For example, if I wanted to take 10 lines from the xyz function and put it into the abc function, I would type something like this in vi:

/xyz  
10yy  
/abc  
p

The ‘/’ means search, ‘yy’ means yank, ‘p’ means paste the buffer from yy. You see how the commands are commands themselves and not keyboard shortcuts to the menu options. Could you do something like that in VS without touching the mouse?

> [@](#):
>
> Yes, but shouldn’t your text editor of last resort be at least friendly enough so that the uninitiated can figure out how to _exit_ it without killing the process? I still say it’s bad design in the \*nix world to use VI as a text editor of last resort-- PICO, as mentioned above, would be a much better choice. (But of course that change will never happen, because \*nix developers are creatures of habit, and they all already know VI…)

Base unix is not designed for end-users. Most everything in unix is cryptic unless you know what’s going on. Vi is no different. If someone gets into vi and can’t figure how to get out, they probably shouldn’t be using unix. Sure it would be nice if the default editor was easy to use, but it’s not really that big of a deal in the unix world. Unix is complex, but with that complexity comes power.

When it comes down to it, pretty much all editors can do the same thing with plain text files. It’s hard to say one editor is better when the end result will look exactly the same no matter which editor you use. But the power of vi allows me to do complex changes in the editor easily.

For example, by making use of the regular expression capabilities in vi, I can quickly do a complex search and replace. Not just a simple replace abc with xyz, but something very involved. For example, find all words which are of the pattern letter number (like a1) and reverse the characters so it’s number letter (1a). The vi pattern command would be:

%s/ ([a-z])([0-9]) / \2\1 /g

That command would replace every number-letter word with letter-word in the whole file at one time. How long would that take in Visual Studio? There’s no denying it looks like complex gibberish to a novice, but tricks like that can save me hours of editing time.

---

<div class="post-metadata">

**Author:** ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)\
**Post date:** [December 13, 2011, 9:35pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/23 "2011-12-13T21:35:45Z")

</div>

> [@](#):
>
> Quoth **yabob** :
> 
> :g/foo$/s/^(._)|(._)$/\2|\1/
> 
> Frankly, I don’t use vi often, but when I do, it’s usually because I find it easier for ad-hoc massive file massaging than doing a bunch of throwaway shell script.

If you’re using commands that complicated in your text editor, then you _are_ effectively doing a bunch of throwaway shell script, just in a different shell. And what effect will that command have, if you misplace one of those backslashes or parentheses? If I’ve got something that complicated, I want to save it in a file, to easily correct it if I make a mistake.

---

<div class="post-metadata">

**Author:** ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)\
**Post date:** [December 13, 2011, 9:45pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/24 "2011-12-13T21:45:02Z")

</div>

> [@](#):
>
> Quoth **filmore** :
> 
> VI, it’s still eminently usable without ever touching a menu.  
> How can you use Visual Studio without the mouse? Aren’t your keyboard shortcuts just Alt shortcut keys that bring up the menus? Like Alt-E Alt-Z which might do something like Edit-\>Zoom?
> 
> In vi, the key commands are the command. For example, if I wanted to take 10 lines from the xyz function and put it into the abc function, I would type something like this in vi:
> 
> /xyz  
> 10yy  
> /abc  
> p
> 
> The ‘/’ means search, ‘yy’ means yank, ‘p’ means paste the buffer from yy. You see how the commands are commands themselves and not keyboard shortcuts to the menu options. Could you do something like that in VS without touching the mouse?

I’ve never even used Visual Studio, and I’ll bet I still know how to do this. Control-f for find, then type in xyz, then use shift and the arrow keys to select the lines I want (which can be _any_ lines, not just the 10 next lines or whatever that vi command would be), then control-c to copy them, then control-f and type in abc for find again, then control-v for paste. Frankly, I’m amazed that anyone with more than a passing familiarity with computers would not know this, since those same hotkeys are used in nearly everything (on a Mac, the control would be replaced with command, but otherwise just the same).

And if I didn’t know the hotkey for some operation, I could use the mouse for it the first time, and while I’m on the menu, take a look at what the hotkey is (since they’re always listed on the menu, too). Even if it’s a program I’ve never used before, and a task which I’ve never before performed, it’s just that easy to find the keyboard shortcut.

---

<div class="post-metadata">

**Author:** ![yabob](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/yabob/32/2821_2.png) [@yabob](https://boards.straightdope.com/u/yabob)\
**Post date:** [December 13, 2011, 9:50pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/25 "2011-12-13T21:50:07Z")

</div>

> [@Chronos](#):
>
> If you’re using commands that complicated in your text editor, then you _are_ effectively doing a bunch of throwaway shell script, just in a different shell. And what effect will that command have, if you misplace one of those backslashes or parentheses? If I’ve got something that complicated, I want to save it in a file, to easily correct it if I make a mistake.

Point taken, but it’s a shell I’m comfortable with for doing that sort of tripe. As for mistakes, that’s why editors are provided with “undo” commands. On top of which, if it was something I’d think of doing with vi, and I was doing it in shell script, I’d probably be running it through sed anyway, which means I’m just doing the edit commands at shell level.

---

<div class="post-metadata">

**Author:** ![Walton\_Firm](https://avatars.discourse-cdn.com/v4/letter/w/45deac/32.png) [@Walton\_Firm](https://boards.straightdope.com/u/Walton_Firm)\
**Post date:** [December 13, 2011, 9:50pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/26 "2011-12-13T21:50:49Z")

</div>

> [@Chronos](#):
>
> vi is great, in that it has all sorts of complicated advanced features, available with only a few keystrokes. Unfortunately, one of those complicated advanced features is typing text. But hey, how often do you need to do that in a text editor, anyway?

😃

There’s a truth behind that joke, though. Vim is a programmer’s editor – it’s primarily designed for editing source code, not prose text. And as any programmer knows, the majority of the time is spent not on entering new code but on delving through large amounts of existing code and making small changes all over the place.

So that’s why Vim offers an enormous array of cursor movement and text-replacement commands. Watching an experienced Vim user edit a piece of code is a sight to behold: the cursor jumps all over the screen, never requiring more than a few keystrokes to get to exactly the right place, make a small change, and move on. And when that is what you’re spending most of your time on for the majority of your day, every day, being able to do in three keystrokes what would take twelve (or grabbing the mouse) in another editor, it really adds up.

Another thing about Vim is the ease with which you can quickly create and use a macro. Sure, most other editors have those, too, but generally it’s an advanced feature, hidden deep within the menu, on the assumption that defining a new macro is something you’ll want to do only once in a blue moon. To a Vim user, creating a new macro on-the-fly is a routine matter; it’s almost as common as using the copy/paste functionality. You have a file containing several lines of text and you want to perform the same transformation on each of them, so you use a macro to record what you’re doing with the first line and then you apply that macro to the rest of the file.

---

<div class="post-metadata">

**Author:** ![Indistinguishable](https://avatars.discourse-cdn.com/v4/letter/i/90ced4/32.png) [@Indistinguishable](https://boards.straightdope.com/u/Indistinguishable)\
**Post date:** [December 13, 2011, 9:52pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/27 "2011-12-13T21:52:48Z")

</div>

> [@filmore](#):
>
> How can you use Visual Studio without the mouse? Aren’t your keyboard shortcuts just Alt shortcut keys that bring up the menus? Like Alt-E Alt-Z which might do something like Edit-\>Zoom?

What does it matter whether you call Alt-E Alt-Z a “command” or a “menu shortcut”? It’s not using the mouse either way. (The advantage of it being a menu shortcut, mind you, is that you have a much easier time finding it if you don’t already know it, and finding related commands as well… the ability to use a menu or even a mouse when desired is not some drawback)

> [@](#):
>
> For example, by making use of the regular expression capabilities in vi, I can quickly do a complex search and replace. Not just a simple replace abc with xyz, but something very involved. For example, find all words which are of the pattern letter number (like a1) and reverse the characters so it’s number letter (1a). The vi pattern command would be:
> 
> %s/ ([a-z])([0-9]) / \2\1 /g
> 
> That command would replace every number-letter word with letter-word in the whole file at one time. How long would that take in Visual Studio? There’s no denying it looks like complex gibberish to a novice, but tricks like that can save me hours of editing time.

[Here](http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.80).aspx).

---

<div class="post-metadata">

**Author:** ![Jas09](https://avatars.discourse-cdn.com/v4/letter/j/d07c76/32.png) [@Jas09](https://boards.straightdope.com/u/Jas09)\
**Post date:** [December 13, 2011, 10:34pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/28 "2011-12-13T22:34:25Z")

</div>

Yup, to do the replace that **yabob** wanted just took me 2 minutes to figure out in VS.

You turn on Regular Expressions, type {[a-b]}{[0-9]} in the Find box and /2/1 in the Replace with box. You can do it the current document, all open documents, the entire project, the entire solution, or the current code block.

Edit: Also, there are handy drop-down menus that let you insert RegEx expressions in your dialog so me (having used RegEx once like 10 years ago) was able to figure out the slight differences in syntax very quickly.

---

<div class="post-metadata">

**Author:** ![gazpacho](https://avatars.discourse-cdn.com/v4/letter/g/6f9a4e/32.png) [@gazpacho](https://boards.straightdope.com/u/gazpacho)\
**Post date:** [December 13, 2011, 10:44pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/29 "2011-12-13T22:44:26Z")

</div>

> [@Jas09](#):
>
> Yup, to do the replace that **yabob** wanted just took me 2 minutes to figure out in VS.
> 
> You turn on Regular Expressions, type {[a-b]}{[0-9]} in the Find box and /2/1 in the Replace with box. You can do it the current document, all open documents, the entire project, the entire solution, or the current code block.
> 
> Edit: Also, there are handy drop-down menus that let you insert RegEx expressions in your dialog so me (having used RegEx once like 10 years ago) was able to figure out the slight differences in syntax very quickly.

Any editor that has a following among programmers will have some way to handle complex regular expressions. I do similar things with nedit and notepad++.

---

<div class="post-metadata">

**Author:** ![filmore](https://avatars.discourse-cdn.com/v4/letter/f/7993a0/32.png) [@filmore](https://boards.straightdope.com/u/filmore)\
**Post date:** [December 13, 2011, 10:47pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/30 "2011-12-13T22:47:00Z")

</div>

> [@Chronos](#):
>
> I’ve never even used Visual Studio, and I’ll bet I still know how to do this. Control-f for find, then type in xyz, then use shift and the arrow keys to select the lines I want (which can be _any_ lines, not just the 10 next lines or whatever that vi command would be), then control-c to copy them, then control-f and type in abc for find again, then control-v for paste. Frankly, I’m amazed that anyone with more than a passing familiarity with computers would not know this, since those same hotkeys are used in nearly everything (on a Mac, the control would be replaced with command, but otherwise just the same).
> 
> And if I didn’t know the hotkey for some operation, I could use the mouse for it the first time, and while I’m on the menu, take a look at what the hotkey is (since they’re always listed on the menu, too). Even if it’s a program I’ve never used before, and a task which I’ve never before performed, it’s just that easy to find the keyboard shortcut.

If you’re comparing the tasks based on a novice operator, the GUI will win every time. Most every other editor will win on the novice experience. I would say Vi is the hardest editor for the novice. A novice may not be able to type anything into Vi. But if you’re using an editor, you will likely use it for years. You should compare editors based on the experience of an expert user of that editor. You can use Notepad as your editor and the end result will look the same. That doesn’t mean Notepad is as good as everything else.

A Vi user will be able to do many tasks quicker than the equivalent task in a GUI editor. Many tasks will take less keystrokes in Vi. Vi is harder to learn, but after you learn it the complexity doesn’t matter.

For an experienced user, is there any difference in the compexity to type ‘/xyz’, ‘ctrl-f xyz’, or mouse to Edit -\> Find and type xyz? Really it’s the same complexity to the expert user. But generally Vi will take less key/mouse action to accomplish the same task. So if you edit a lot, that may make a difference to you. The complexity of Vi is evident when you are learning it, but once you are an expert it is no more complex than any other editor.

One advantage Vi has over most other editors is the ability to perform an action on just certain lines which match a pattern. For example, delete all lines that have the word dog (g/dog/d means globally find the lines with dog and 'd’elete them). For lines 1-10, replace the word cat with feline (1,10s/cat/feline/ means from line 1 to 10 replace cat with feline). For any line with the word dog, replace the word food with kibble (g/dog/s/food/kibble/).

Maybe there is some editor that has the same power as Vi. That’s great if there is, but is it also free, installed with the OS on many platforms, and freely available on every other platform? Probably not, but Vi is, and that’s one of the reasons it is so great.

---

<div class="post-metadata">

**Author:** ![Indistinguishable](https://avatars.discourse-cdn.com/v4/letter/i/90ced4/32.png) [@Indistinguishable](https://boards.straightdope.com/u/Indistinguishable)\
**Post date:** [December 13, 2011, 10:55pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/31 "2011-12-13T22:55:52Z")

</div>

All these menu based editors let you access the menus with the keyboard as well… I don’t see what’s so terrible about menus. They’re a great bit of design, as far as I’m concerned.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [December 13, 2011, 11:16pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/32 "2011-12-13T23:16:32Z")

</div>

> [@Indistinguishable](#):
>
> All these menu based editors let you access the menus with the keyboard as well… I don’t see what’s so terrible about menus. They’re a great bit of design, as far as I’m concerned.

Menus are terrible to navigate and they’re modal, meaning they lock you into a path which is difficult to get out of.

---

<div class="post-metadata">

**Author:** ![yabob](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/yabob/32/2821_2.png) [@yabob](https://boards.straightdope.com/u/yabob)\
**Post date:** [December 13, 2011, 11:19pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/33 "2011-12-13T23:19:34Z")

</div>

> [@Jas09](#):
>
> Yup, to do the replace that **yabob** wanted just took me 2 minutes to figure out in VS.
> 
> You turn on Regular Expressions, type {[a-b]}{[0-9]} in the Find box and /2/1 in the Replace with box. You can do it the current document, all open documents, the entire project, the entire solution, or the current code block.
> 
> Edit: Also, there are handy drop-down menus that let you insert RegEx expressions in your dialog so me (having used RegEx once like 10 years ago) was able to figure out the slight differences in syntax very quickly.

I think you’re confusing my example with **filmore** ’s. My point wasn’t simple search and replace, but I included use of the “g” command to limit search and replace to only certain lines of the file matching a different pattern. I see that **filmore** has now brought up the “g” command, too. I’ll add that you can do something like “g/Sunday/.-1s/sunrise/sunset/” - change “sunrise” to “sunset” on all lines PREVIOUS to a line containing the word “Sunday”. Or even “g/Dog/?Horse?s//Pony/” - On every line containing “Dog”, search backwords for one containing “Horse” and change it to “Pony” - If there are multiple lines with “Horse” preceeding the “Dog” line, I’m only changing the last one. Then there’s the key sequence mapping feature …

As I said, I only want this sort of thing once in a while, but when I do, I’m glad to have learned how it works, ridiculous syntax and all.

---

<div class="post-metadata">

**Author:** ![tellyworth](https://avatars.discourse-cdn.com/v4/letter/t/977dab/32.png) [@tellyworth](https://boards.straightdope.com/u/tellyworth)\
**Post date:** [December 13, 2011, 11:31pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/34 "2011-12-13T23:31:20Z")

</div>

> [@Blakeyrat](#):
>
> Per usual for open source tools, the answer is “a bunch of geeks got used to it back in the 80s, and they still use it because they hate learning new things.”

That’s pretty much why I use it. That and the fact that it’s guaranteed to be available and work predictably. I code mostly in terminal windows, over ssh to remote servers. Vi is always there, everything works in a ssh session, and it’s designed to keep working predictably even when the connection is slow or unreliable (which can occasionally be critical when you’re dealing with remote servers).

Anecdotally, I’ve noticed that many of the more experienced developers I’ve worked with rarely use the advanced features of their text editors. I couldn’t tell you what 95% of the vi commands are, despite using it for many years. I rarely use anything more advanced than search/replace, or n-prefixes to basic commands. I think there’s something to be said for relying only on basic features and bundled system tools.

---

<div class="post-metadata">

**Author:** ![black\_rabbit](https://avatars.discourse-cdn.com/v4/letter/b/f19dbf/32.png) [@black\_rabbit](https://boards.straightdope.com/u/black_rabbit)\
**Post date:** [December 13, 2011, 11:35pm UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/35 "2011-12-13T23:35:34Z")

</div>

> [@Blakeyrat](#):
>
> …To go back to the Visual Studio example…

Why in the world are you comparing a text editor to an IDE? It’s like comparing a guitar to a synthesizer, and frankly, VS is probably as if not more user-unfriendly to the uninitiated for editing or creating simple text files than vi.

I use vi on Cygwin as my scratch pad and composition editor for large documents because back when I was in a hands-on role, we used vi on the Linux infrastructure servers, because we used vi on the AIX database servers, because we used vi on the SCO retail backend boxes, where our standard development and deployment language was ksh.

I _had_ to learn vi’s intricacies because it was the only editor I could count on to be available on whatever random system I got woken up at 3AM to fix, and I continue to use it because I have no reason to learn something else.

---

<div class="post-metadata">

**Author:** ![Jas09](https://avatars.discourse-cdn.com/v4/letter/j/d07c76/32.png) [@Jas09](https://boards.straightdope.com/u/Jas09)\
**Post date:** [December 14, 2011, 12:02am UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/36 "2011-12-14T00:02:41Z")

</div>

> [@yabob](#):
>
> I think you’re confusing my example with **filmore** ’s.

You’re right - sorry!

And yeah, for more complicated scripting vi is likely more powerful than VS. Right tool for the job, and all that.

---

<div class="post-metadata">

**Author:** ![DrCube](https://avatars.discourse-cdn.com/v4/letter/d/a3d4f5/32.png) [@DrCube](https://boards.straightdope.com/u/DrCube)\
**Post date:** [December 14, 2011, 12:41am UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/37 "2011-12-14T00:41:11Z")

</div>

You guys bringing Word into this are out of your element. Text editors are not word processors. Word processors are all about layout. Bolding, highlighting, changing colors, font size, inserting pictures, managing section headings, chapters, titles, etc. (I would argue that whole paradigm is misguided. I believe in separating content and layout. Which is why I use LaTeX and emacs. 🙂 )

You can make something easy and discoverable for beginners, or powerfully useful for experts, but it is almost impossible to do both at the same time. Vi and emacs were designed by and for people who edit large quantities of text all day, every day. Programmers, mostly. I would argue they’re a great investment (in terms of the time it takes to learn them) for writers, too.

The only thing I know how to do in vim is get into and out of insert mode, save and quit. But I’m getting to be pretty adept at emacs. I can search and replace across entire directories using regular expressions in a few short keystrokes. There is no way in hell you can do that with notepad. Vi follows the traditional unix philosophy more than emacs (which flagrantly assaults it). It does one thing and it does it really well. It is installed on every unix machine by definition.

The great thing about emacs, and to a lesser extent vim, is the huge amount of customization you can do. Emacs is basically just an operating system written in lisp. You can play games, check and respond to email, browse the web, explore files and directories, and use the shell, all within emacs. And all that lisp code is free for studying, modifying and adding to. But you usually don’t have to, because people have been doing just that for 30 years, and contributing their changes back to all of us. It’s a community just as much as an it’s editor.

Their steep learning curve is part of the allure. It makes the editor, at least in a small way, part of your identity. It is what caused the editor wars. Nobody fights about whether notepad is better than nano (it isn’t, by the way 😉 .) If you’re not a pretty hard core computer nerd, you’re not going to understand the communities behind these programs or what they represent. It isn’t that you’re excluded, it’s just that ease, accessibility, and popularity aren’t what they’re about.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [December 14, 2011, 1:43am UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/38 "2011-12-14T01:43:15Z")

</div>

> [@DrCube](#):
>
> Vi follows the traditional unix philosophy more than emacs (which flagrantly assaults it).

Emacs is an immigrant to the Unix world; it came from the [Incompatible Timesharing System (ITS)](http://en.wikipedia.org/wiki/Incompatible_Timesharing_System) by way of [Multics](http://en.wikipedia.org/wiki/Multics) and, at least in the Unix world, picked up more than a little [Lisp Machine](http://en.wikipedia.org/wiki/Lisp_Machines) on the way.

> [@](#):
>
> Emacs is basically just an operating system written in lisp. You can play games, check and respond to email, browse the web, explore files and directories, and use the shell, all within emacs.

Deeply true and deeply false at the same time. 😉 Emacs isn’t an OS so much as it’s a UI: The Emacs Way is to use Emacs to do everything, enabling you to use the same keystrokes in similar ways to achieve all your computing tasks and tie everything you do into one coherent world. The Vi Way is to live in the command line and use the command line as the single, coherent world everything happens in.

> [@](#):
>
> And all that lisp code is free for studying, modifying and adding to. But you usually don’t have to, because people have been doing just that for 30 years, and contributing their changes back to all of us. It’s a community just as much as an it’s editor.

This is all true. This is also all [Stallman](http://en.wikipedia.org/wiki/Richard_Stallman); if Emacs is Superman, Stallman is Jor-El and the ITS/Lisp Machine world is dead, departed Krypton.

---

<div class="post-metadata">

**Author:** ![BigT](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/bigt/32/12044_2.png) [@BigT](https://boards.straightdope.com/u/BigT)\
**Post date:** [December 14, 2011, 1:56am UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/39 "2011-12-14T01:56:28Z")

</div>

> [@black\_rabbit](#):
>
> Why in the world are you comparing a text editor to an IDE? It’s like comparing a guitar to a synthesizer, and frankly, VS is probably as if not more user-unfriendly to the uninitiated for editing or creating simple text files than vi.

Because VI was designed to be an IDE, essentially. Most of its features are only useful to programmers. It’s not fair to compare it to text editors because that’s not what it is.

And VS is far from the only bit of software that can do this stuff. Notepad++ is one I use. It likewise calls itself a text editor when it really is more of an IDE, with its syntax highlighting (a feature I don’t believe VI has).

The point is that there is software out there that does what VI does and more, and yet is easier to use. From an objective standpoint, this software is better. The “nerd wars” are leftovers from an earlier time and are rapidly fading, and thus can be ignored.

Oh, and VI isn’t the same thing as VIM, as the latter added some much needed intuitiveness. I can open VIM, and I can at least start typing a text file, instead of starting in a mode that turns every key into a hidden function key.

---

<div class="post-metadata">

**Author:** ![gazpacho](https://avatars.discourse-cdn.com/v4/letter/g/6f9a4e/32.png) [@gazpacho](https://boards.straightdope.com/u/gazpacho)\
**Post date:** [December 14, 2011, 2:04am UTC](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063/40 "2011-12-14T02:04:27Z")

</div>

> [@BigT](#):
>
> Because VI was designed to be an IDE, essentially. Most of its features are only useful to programmers. It’s not fair to compare it to text editors because that’s not what it is.
> 
> And VS is far from the only bit of software that can do this stuff. Notepad++ is one I use. It likewise calls itself a text editor when it really is more of an IDE, with its syntax highlighting (a feature I don’t believe VI has).
> 
> The point is that there is software out there that does what VI does and more, and yet is easier to use. From an objective standpoint, this software is better. The “nerd wars” are leftovers from an earlier time and are rapidly fading, and thus can be ignored.
> 
> Oh, and VI isn’t the same thing as VIM, as the latter added some much needed intuitiveness. I can open VIM, and I can at least start typing a text file, instead of starting in a mode that turns every key into a hidden function key.

Does anybody really use vi anymore instead of vim? All the machines I have encountered in the last 5 years alias vi to vim.

[Previous page](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063.md?page=1)

[Next page](https://boards.straightdope.com/t/whats-so-great-about-the-vi-editor/606063.md?page=3)
