# A Sysadmin's favorite IDE

* Eclipse
* VSCode
* Geany
* PyCharm
* Atom
* Emacs
* Vim

When you think of the tools a sysadmin relies on every day, an IDE isn't necessarily the first thing that comes to mind.
IDEs are for developers.
It's literally in the name: Integrated Development Environment (IDE).
Setting aside the reality that most sysadmins by necessity do a lot more than their official job description lets on, an IDE is still a useful tool for any resourceful sysadmin with a personal collection of utilitarian scripts, a Git repo full of important Ansible plays, and half a dozen custom web portals to help their users navigate to all the important sites on the intranet.

## Eclipse

The [Eclipse](http://eclipse.org) editor gained fame as a premiere code workbench for Java, but it quickly diversified thanks to its plugin system and integrated marketplace.
I've used Eclipse for Java, XML, Bash, PHP, and Markdown, but there are many other plugins available to help you turn Eclipse into an IDE appropriate for the tools you use.
Thanks to its friendly marketplace module, installing plugins is as easy as searching and clicking an **Install** button.
This might seem unsurprising today, now that nearly every IDE offers the same convenience, but when it first appeared in Eclipse it was a progressive stance, and encouraged users to customize and contribute to the open source ecosystem.

![Eclipse marketplace](eclipse-marketplace-bash.jpg)

Thanks to the variety of plugins available for Eclipse, you can easily make it a centralized hub for all the information you process.
You can write your Bash scripts, write and verify [YAML](https://www.redhat.com/sysadmin/yaml-beginners), monitor your Kubernetes cluster, help [developers coordinate standard workspaces](https://opensource.com/article/19/10/cloud-ide-che), write documentation in Markdown, and much more.

## Geany

Sometimes less is more.
If all you want from an IDE is the awareness of a project directory, some syntax highlighting, and basic linting, then you should take a look at [Geany](https://www.geany.org/).
Geany is a lightweight code editor with features for Bash, Python, Perl, and TCL.

![Geany](https://www.redhat.com/sysadmin/sites/default/files/styles/embed_large/public/2020-04/geany.png?itok=W-IMZEIm)

It does have plugins, so if you don't see what you want at first, have a look around and see what others have added to it.

## PyCharm

A good number of sysadmins are keen to use Python for tasks that traditionally would have been an obvious choice for Bash or Perl.
There are lots of good reasons for wanting to program in an object-oriented language ([Ansible](USEFUL LINK TO REDHAT ANSIBLE PAGE) being a significant one), even if it does apparently go against the obvious choices.
If you're going to do that, though, you probably want a good Python editor, and [PyCharm (Community Edition)](https://www.jetbrains.com/pycharm/download) is one of the best.
It has keyword highlighting to help detect typos, quotation and parenthesis completion to avoid syntax errors, line numbers (helpful when debugging), indentation markers, and a Run button to test code quickly and easily.
You can install it from the project website or [install it as a Flatpak](https://flathub.org/apps/details/com.jetbrains.PyCharm-Community).

## VSCode

VSCode walks the fine line between editing text and managing your entire codebase, and it's flexible enough that you treat it either as just another text editor, or as an IDE.
Like Eclipse, it's extensible through plugins and has proven to be a reliable code editor that's easily beaten out formidable non-open rival editors.

![VSCodium](https://opensource.com/sites/default/files/uploads/code-oss.png)

Whether you're scripting in Bash or Perl, writing YAML files, or programming in Python or Go, VSCode can help.

## Atom

[Atom](http://atom.io) is an open source IDE-like text editor that Microsoft acquired when it purchased GitHub.
Like VSCode, it can be extended through plugins and customized with themes and whatever combination of tools you use.
With no extra plugin required, it features built-in GitHub integration, so if your DevOps workflow requires you to commit your scripts and plays frequently, Atom has a low bar to entry.
Atom is potentially whatever you need it to be, and it's got the extensions to help.

![Atom](https://opensource.com/sites/default/files/uploads/atom.jpg)

## Emacs

[GNU Emacs](http://gnu.org/software/emacs) is the editor that more or less started the craze of an all-in-one text editing environment all but disguised as an operating system.
Of course, Emacs isn't actually an IDE, but it does have several default *modes* that make it look an awful lot like one, and there are hundreds of plugins available to transform it into a legitimate development environment.
After just a basic install, you have access to a filesystem browser called `dired`, a shell (appropriately called `shell`), several syntax highlighters, and a pretty good text editor that uses many of the same key bindings you already know from Bash.
It's trivial, thanks to the `package` mode, to list available plugins to install them, and to keep them updated.

![https://opensource.com/sites/default/files/racket-mode.jpg](Emacs and Racket)

Add a linter, whatever syntax highlighter you need, Git integration, auto-completion, and a few other packages, and you've essentially got an IDE.
And the great thing about Emacs is that you never have to run more of an IDE than you want for any given task.
Should you need an IDE for a particularly complex automation project, you can activate the components you need.
For simple one-off scripts, you can use it as just a simple text editor.
It's all things to all admins.

## Vim

Vim is the default text editor on Unix and Linux.
As of Vim 8, it has tools to make it [easier than ever to manage plugins](https://opensource.com/article/20/2/how-install-vim-plugins).
There's nothing it can't handle, no other editor matches its speed and efficiency (once you learn it, anyaway), and you'll never be without it.
It's the obvious choice for many.

![File tree plugin for Vim](https://opensource.com/sites/default/files/uploads/vim-nerdtree.jpg)
However, it's not exactly an IDE, at least not by default.
There are many great plugins out there that can help transform it into something resembling an IDE, at least as much as Emacs does, and probably near what Geany provides.
It does take some setup, though, and either way, it may not matter to a sysadmin who, in the end, doesn't really need an IDE after all.

## What's your favourite IDE?

Do you use an IDE for your work?
What's your favourite?
Tell us what we missed in the poll!