Vim is a text editor renowned for its efficiency and its use of keyboard shortcuts. It's based on the Vi text editor from the 1970's. It was first released in 1991 and is still being developed today. It comes pre-installed on Unix systems (including MacOS) and can be run from the terminal.

Vim is famous in another way too - for being difficult to learn. I found some good and remarkably creative tools to begin learning its concepts and controls. This was necessary because there is no GUI. There is a game here, and there is this interactive tutorial. There's also a built-in vim tutorial - just type 'vimtutor' into Terminal.

Vim is designed so that you don't need to take your hands off your keyboard and use a mouse. It has the 'insert' mode where you enter text as usual, and the 'command' mode where you can make use of a comprehensive and flexible shortcut language to move around, edit and search the text. With no GUI or toolbar, it's a very different approach to text editing than I'm used to.

You can run Vim from the terminal, but there are also versions that run as apps. MacVim on MacOS has the option to show a tool bar of simple commands like a normal program, and lets the arrow keys move the cursor in addition to VIM's 'hjkl' functionality. This makes getting started a little simpler.

There are also a lot of plugins to extend Vim's functionality and turn it from a text editor into an IDE. This post walks you through setting up Vim as a Python IDE and explains how to manage various add-ons.

I recommend Daniel Mieslers blog post for a quick overview of how to use Vim.