This is a continuation of my previous article, where I went over how to turn your console-based Emacs instance into your own minimal remote IDE. The main purpose of this article goes through how to even further extend your Emacs instance running off your local machine. With that, some of these features only work on the GUI instance of Emacs and not the console-based instance. Also note, that a lot of these features are included in the Spacemacs distribution by default, but by adding what you want to your current Emacs instance in apposed to removing un-needed features from Spacemacs, this will allow your Emacs instance to boot faster, run faster, and give you absolute control on how YOU want Emacs to behave. If you don't want to take the time to do this yourself, check out the Spacemacs distro!





Vim Bindings

As a fellow developer who has used Vim a lot, sometimes it's difficult to move away from Vim's unique way of key sequences and alternating modes. Thankfully, there exists some Emacs packages (EVIL mode) that gives Emacs its counterparts' Vim-style keybindings. There are various reasons as to why someone would want to use Vim-style functionality in Emacs, but to name a couple:

If you've heard of the dreaded Emacs-pinky from over-use of the Ctrl key, Vim can help save your life (or at least the tendons in your fingers and wrist) with it's ergonomic key strokes. If you want Vim keys, but want to harness the power of Emacs and it's embedded programming language, Elisp, then this is definitely for you.

Whether you want to use traditional Emacs keys to manipulate text, or Vim keys, Emacs-mode and Vim-mode can each respectively be toggled on or off on a whim's notice.





Other Keybindings

To take Vim keybindings a step further, simply including EVIL mode into Emacs doesn't give you the highly desired Vim LEADER key by default. If you would like to configure Vim-style keybindings and/or Emacs-style keybindings in a general, more convenient way, then General.el is for you. Whether you are in Emacs mode, or Vim's normal, visual, or insert modes, you can use the same key-sequences to execute Emacs functions.





One more thing about keybindings...

I've mentioned a lot about keybindings thus far, and honestly Emacs has a lot of them. To better know which key sequences match to which functions, which-key.el is another great package to help you out. No other package helps you learn more about Emacs than the which-key package. which-key displays a popup buffer with a list of different options of completing your mid-keystroke executions.





Sublime-like Editing

If you want smooth-scrolling, a minimap, or even a distraction-free interface similar to Sublime's editor, this can be enabled as well thanks to the Sublimity package. Another important package to note is minimap.el, as some like to use this minimap feature over Sublimity's.





Directory Tree

Most IDE's and graphical text editors have some sort of tree-like file explorer. NeoTree allows Emacs to have a left-paned buffer that is dedicated to files and directory navigation. Simply press enter with your cursor over a file, and it will open! As an alternate, you can actually use Emacs' built in `dired` function, but NeoTree is more eye-friendly.





Themes

When launched at first startup, a lot of IDE's will ask you which theme you would like your editor to be in (usually the only options are light and dark themes). Emacs has this beat, as there are dozens of built in ready-to-go themes, and hundreds of themes you can use that gave been built by 3rd-parties. The themes used for the screenshots for this article are the spacemacs-dark and doom-one themes (the doom-one theme is used in the screenshot below).





More UI Customizations

Emacs is 100% completely customizable and extendable. Not only can you change the overall theme, but you can also change Emacs' native mode-line too! You can also easily disable the menu icons that are visible by default. Make Emacs look the way you like it!





TRAMP (Transparent Remote (file) Access, Multiple Protocol)

Emacs has built-in remote-file access, and supports the most popular protocols (i.e. SSH, SCP, Telnet, etc). On systems where SSH is not a supported protocol without 3rd-party modules (Microsoft Windows), you can use Putty's plink.exe program to connect to remote servers. This is great for when you can't run Emacs within the terminal on the remote server, but still want to edit remote files from your local Emacs instance. And guess what? When you save a remote file in your local Emacs instance, it automatically saves on the remote server!

The screenshot above shows the directory listing on the server! You can delete files from here too if you want.





Afterthoughts

There are still a ton of features that I have not mentioned that you can enable to further extend Emacs and to make it closer in feel to Visual Studio, NetBeans, Code::Blocks, Eclipse, or any other type of IDE.