Are there cases where vi is the only option?

Are there scenarios where vi is the only option to create, edit or modify a file in an Ubuntu environment?

My question is basically to really know if there is such a case where I would be forced to use vi because it would be the only option available in a particular case in the Ubuntu ecosystem.

Could a particular case exist where I somehow would not have access to other options like nano, pico or simply sending the information with tools like cat, sed, tee and more?

I would assume this is more of a server or cloud side since on the Desktop there are many more options, but from anybody that uses the terminal a lot I ask:

Is there such a case?


Inside the Ubuntu ecosystem, I do not think this case can even exist, as vi would at least be a vim-tiny, which is already a “real vim” far from “real vi.”

In the context of resource limited embedded systems, which are not normally Ubuntu, you may just have a vi that turns out to be a link to busybox. And not space left. Then, vi is the only option.

Apart from that, I think situations where vi the only option are not very common at all today, even outside the Linux world.

But there can easily be situations where vi is the only option you can plan for, the only option that certaily will exist in some future situation — which will happen inside a customer’s over-chilled server room, most probably.

Imagine you are called by a customer:

Customer: I need to get this configuration fixed! Now!! I don’t know how, but I can tell you where the configuration file is. Can you help me!?!

You: Ok, what kind of system is that running on?

Customer: Oh, it's on server foo, ahh... it's running... can't remember, something with "ix" in the end, or mayeb with "ux"...

No problem, by now, you know there will be vi!


Vi is never the only option; you can always use ed instead.


Well, there is one case where you need the vi editor, lets assume:

  • there is not graphical interface
  • you're on some strange unknown *nix system
  • your terminal look like this:

enter image description here

  • you have enough of guys like this:

enter image description here

As you can see there is no numerical keypad. With the old vi (and I mean the original traditional vi, not vim, vim.tiny, or vim.basic) you can edit a file with this keyboard. Without arrow keys? Yes, when you're in command mode you moved through the file with h, j, k and l, like a pro. h was left, j was down, k was up and l was right.


Fact of the matter is that, in many distributions editors like nano and pico just aren't standard while other packages, namely vim-tiny are. See here for the package list of ubuntu-minimal, vim-tiny is the only editor. According to this answer, it seems to be the case for Ubuntu server, as well. I know this is the case for base Debian, Fedora as well.

That being said, given that if you have nano on your system I've yet to see a case where you'd HAVE to use vi instead, but, playing off @Volker's answer, if you're working for a customer and don't have root access? apt-get install nano isn't going to do you much good (if it even has access to the outside internet!).


There are a number of cases where vi (and by that I naturally mean vim.tiny because that's what we ship) could be the only interactive editor. If we ignore butterflies and cosmic-rays, these seem like the most likely occasions where this could happen:

  • You're only using the ubuntu-minimal base meta-package. This depends on vim-tiny but no other editors. I can't currently find a way to install Ubuntu without the standard^ task but you can remove it after installation with:

    sudo apt-get remove $(apt-cache show standard^ | awk '/Package: / {print $2}')
    

    I have personal experience where I've been handed a system image without the standard^ task installed. If I hadn't had network access vi would have been my only option.

  • Chrooting into an environment that only mapped vi through

  • Manually nuking all the other editors (and disabling the means to reinstall them)

  • Manually breaking the shell to stop known editors except vi being launched.

A true-minimal install will be the most likely reason but those are fairly rare these days. Some VPS and cloud hosting companies use them (to save disk space as much as anything else) but I would suggest that they are definitely not the norm.