Recs.
Updated
Vim(Vi Improved) is a free, open source text editor, created by Bram Moolenaar and publicly released in 1991. Vim is one of the most versatile Text Editors and one of the best substitutes for an IDE (Integrated Development Environment) given the amount of plugins available, that make Vim almost an IDE.
Vim is available for Ms-Windows, Unix, and Mac. Independent ports are available for mobile, both for Android (Vim Touch) and iOS.
SpecsUpdate
Pros
Pro Keyboard-based, mouse-free interface
You never have to reach for the mouse or the ctrl/alt buttons again. Everything is 1 or 2 key presses away with almost 200 functions specifically for text editing.
If you insist on a GUI, versions of vim like gVim or MacVim allow you to use the mouse and familiar platform shortcuts, which can help ease the learning curve.
Pro Ubiquity and portability
Vi/vim exists on almost all Unix-like platforms, it is the de-facto Unix editor, and is easily installed on Windows. All you need to make it work is a text-based connection, so it works well for remote machines with slow connections, or when you're too lazy to set up a VNC/Remote Desktop connection.
Pro Excellent performance
Because it loads the whole file into RAM, replacing all string occurences in 100MB+ files is quick and easy. Every other editor sort of died during that. It is extremely fast even for cold start. Vim is light-weighted and very compact. In terminal, it uses only small amount of memory. Anytime you invoke vim, it's extremely fast. It is immediate, you can't even notice any time lag.
Pro Lightweight and fast
When compared to modern graphical editors like Atom and Brackets (which have underlying HTML5 engines, browsers, Node, etc.), Vim uses a sliver of the system's memory and it loads instantly, all the while delivering the same features. Vim is also faster than Emacs.
Pro Extremely portable
Vi/vim exists on almost all Unix-like platforms. It's the de-facto Unix editor and is easily installed on Windows. All you need to make it work is a text-based connection, so it works well for remote machines with slow connections, or when you're too lazy to set up a VNC/Remote Desktop connection.
Pro Can never outgrow it
The fact that very few, if any, people claim to be a "Vim Master" is a testament to the breadth and depth of Vim. There is always something new to learn - a new, perhaps more efficient, way to use it. This prevents Vim from ever feeling stale. It's always fresh.
Pro Keyboard-based, mouse-free interface, and trackpad support
There's no need to reach for the mouse or the Ctrl/Alt buttons again. Everything is a mere key press or two away with almost 200 functions specifically for text editing. Vim does support the mouse, but it's designed so you don't have to use it for greater efficiency.
Versions of Vim, like gVim or MacVim, still allow you to use the mouse and familiar platform shortcuts. That can help ease the learning curve and you'll probably find you won't want to (or need to) use the mouse after a while.
Pro Has multiple distinct editing modes
Interaction with Vim is centered around several "modes", where purpose and keybindings differ in each.
Insert mode is for entering text. This mode most resembles traditional text entry in most editors.
Normal mode (the default) is entered by hitting ESC and converts all keybindings to center around movement within the file, search, pane selection, etc.
Command mode is entered by hitting ":" in Normal mode and allows you to execute Vim commands and scripts similar in fashion to a shell.
Visual mode is for selecting lines, blocks, and characters of code.
Those are the major modes, and several more exist depending on what one defines as a "mode" in Vim.
Pro Flexible feature-set
Vim allows users to include many features found in IDEs and competing editors, but does not force them all on the user. This not only helps keep it lighter in weight than a lot of other options, but it also helps ensure that some unused features will not get in the way.
Pro Has been supported for a long time and will be supported for many years to come
Pro Everything is mnemonic
No need to memorize different key combinations for things like deleting the text inside of a block or deleting the text inside of a pair of quotes. It's just a series of actions, or nouns and verbs, or however, you prefer to think about it. If you want to delete, you select "d"; if you want it to happen inside something, you select "i"; and if you want the surrounding double-quotes, just select ". But if you were changing the text, or copying it, or anything else, you'd still use the same "i" and ". This makes it very easy to remember a large number of different extremely useful commands, without the effort it takes to remember all of the Emacs "magic incantations", for example.
Pro Avalailability of sophisticated plugins
Vimscript provides a rich scripting functionality to build upon the core of vim. When combined with things like Tim Pope's Pathogen plugin management system, it becomes easy to add support for syntax, debugging, build systems, git, and more. Vim can be made into a sophisticated IDE with just a few plugins, such as YouCompleteMe and CtrlP.
Pro Everything is a mnemonic
No need to memorize different key combinations for things like deleting the text inside of a block or deleting the text inside of a pair of quotes. It's just a series of actions, or nouns and verbs, or however you prefer to think about it. You want to delete, so you select "d", you want it to happen inside something, so "i", and you want the surrounding double-quotes, so just ". But if you were changing the text, or copying it, or anything else, you'd still use the same "i" and ". This makes it very easy to remember a large number number of different extremely useful commands, without the effort it takes to remember all of the Emacs "magic incantations", for example.
Pro Productivity enhancing modal paradigm
As with all vi-like editors, Vim provides a modal paradigm for text editing and processing that provides a rich syntax and semantic model for composing succinct, powerful commands. While this requires some initial investment in learning how it works in order to take full advantage of its capabilities, it rewards the user well in the long run. This modal interface paradigm also lends itself surprisingly well to many other types of applications that can be controlled by vi-like keybindings, such as browsers, image viewers, media players, network clients (for email and other communication media), and window managers. Even shells (including zsh, tcsh, mksh, and bash, among others) come with vi-like keybinding features that can greatly enhance user comfort and efficiency when the user is familiar with the vi modal editing paradigm.
Pro Asynchronous I/O support
Since Vim 8, Vim can exchange characters with background processes asynchronously. This avoids the problem of the text editor getting stuck when a plugin that had to communicate with a server was running. Now plugins can send and receive data from external scripts without forcing Vim to freeze.
Pro Donations and support to Vim.org helps children in Uganda through ICCF Holland
Cons
Con Poor feature discoverability
Though basic features like syntax checking, autocompletion, and file management are all available out of the box or with minimal configuration, this is not obvious to new users, who might get intimidated or assume they need to install complex plugins just so they can have this functionality. Other features new users might expect to find embedded in Vim, such as debugging, instead follow a UNIX-style model where they are called as external programs, the output of which might then be parsed by Vim so it can display results. Users not familiar with this paradigm will likely fault Vim for lacking those features as well.
Con Steep learning curve
You'll spend a lot of time learning all the commands and modes supported. You'll then spend more time tuning settings to your needs on each machine you use it.
Con Consume brain energy for editing that should be used for logic
Text editing in vim is awesome, but it requires thinking about combination of commands. In other editors, you don't have to think about how to delete this part of code. You just think about how to implement a feature, what is a good design for this code. Even after you get used to using vim, it still requires your brain for editing.
Con Doesn't play nice with the system cut/paste mechanisms
Vim relies on certain tools and features being available to it in order to interact with the system clipboard. When using Vim over SSH, for instance, it doesn't have the ability to push a buffer to your local clipboard as it can when it's running locally. When it's compiled with GUI support, it uses an interface like the xclip/xsel or pbcopy/pbpaste tools to push a specially-named buffer to your clipboard.
On X11 systems, using "+ will place your yank/delete into the selection buffer. On other systems, it behaves the same as "*, which places your yank/delete into the system clipboard.
When Gvim or when using a terminal where Vim has been built with mouse support, it switches to Visual mode when you try to select with the mouse. In a terminal window, you can usually bypass this behavior by holding one of either Shift or Control, and the terminal will behave as if Vim hadn't captured the mouse input, and you will be able to use your terminal's capability for making selections, copies, and pastes.
You can also disable the mouse in Vim, by adjusting the value of ":set mouse".