Just Say No to Nano

Here’s how. But seriously nano is one of the worst things to happen to backend developer and system engineer education for reasons that are not immediately obvious. But here’s a start:

  • encourages beginners to use ctrl-x,
  • fosters bad arrow spamming habits,
  • makes beginners dependent on a non-standard editor,
  • is throw away knowledge and wasted time once vi is learned,
  • babies those that should learn better,
  • assumes “casual” users should be allowed on the command line.

This is no holy-war post. It is factual and practical.

vi is the standard UNIX/Linux editor and has been since ed. This fact is not up for debate. Vi is built in to virtually every such system since 1976. It is so ingrained that the shell history has a builtin vi mode (which everyone should use btw.) Lynx and mutt also have a vi mode. Perhaps only 10x technologists will appreciate this, but those who do the work to learn these tools are guaranteed to blow away the productivity of everyone else using any graphic interface. These are not opinions, they are well-proven objective facts.

No other editor on the planet has tighter integration with the shell. You can actually write code in your document and run that code to generate content. This blows away any concept of extensions. Only seriously powerful programmers will even understand what that means. The point is, if you want to be such a programmer and technologist you must learn VI.

Nano is just a wasteful distraction from learning what you should be.

Morons say dumb things like “it’s your grandpas editor” without understanding the advantages. Meanwhile the 10xers are using it every day and blowing away the moron’s productivity on pretty much everything.

I am really sick of reading tutorials on Digital Ocean and elsewhere that use nano in the instructions. One tutorial shows how to configure your nginx server with nano.

Did you catch this in The Internship?

Some distributions have made nanothe default editor. Really? I was almost excited when CodeAcademy released their CLI lesson but I about threw my laptop through the window when I got to the nano section. [I get way to passionate about this stuff some times. Thankfully we built a system that helps students far better than anything in the cloud so they learn from the actual command-line.]

Command Line Users are No Longer “Casual”

The argument goes that nano is there for the Linux beginner who just wants to edit a config file quickly but that logic falls on its face when you consider if the user is a "casual" Linux user they already have graphical editors they can use. If they are required to use the command line then they are no longer in the "casual" user category. It is irresponsible to encourage "casual" users to mess around at the command prompt without learning exactly what they are doing—including how to use the most ubiquitous and powerful editor of all time (no not vim, yes ed counts, but mean vi without any arrow key dependency habits and other vim bastardizations that make users trained on them non-functional noobs on any UNIX OS without them, and yes there are still millions of them in existence).

Nano Encourages ctrl-x to Exit

Case in point: nano encourages the use of the very troublesome ctrl-x combination. These same users have probably been taught to ctrl-c to get out of stuff on the command line, (which produces a nice help message in vim, by the way instead of whatever it does in nano). Casual users, being "casual", and being on the command line, will find themselves eventually stuck in something and unable to get out. So what will they naturally do? Yep, ctrl-x then ctrl-z, maybe ctrl-s, and now that "casual" user is ready to shut the terminal app down just to get out of it potentially leaving all kinds of zombie processes around. That's right. This is nano's fault for teaching these beginners that horrible habit. I have seen this behavior in dozens of new Linux users. This is no fluke.

Emacs is Worse

By the way, this is same reason we will NEVER teach or use Emacs, which creates even worse habits ctrl-x + ctrl-s will suspend most applications freezing the beginners keyboard. Emacs is a pox on the UNIX world as well serving no real purpose whatsoever. It is neither on all systems nor as easy to use at Atom for the non-vim sort of developer.

Emacs is less of an issue because it is neither installed nor encouraged by any community but the Emacs cult. The vi editor, is however, required for most Linux professional certifications.

Keep Calm and Use vi

If you are using the command line then use the editor built from the very beginning for the command line: vi (or ed or ex, which are actually still quite useful.)