Vim

Vim, short for Vi IMproved, is a configurable text editor often used as
a Python development environment. Vim proponents commonly cite the numerous
plugins, Vimscript and logical command language as major Vim strengths.

Why is Vim a good Python development environment?

Vim's philosophy is that developers are more productive when they avoid
taking their hands off the keyboard. Code should flow naturally from the
developer's thoughts through the keyboard and onto the screen. Using a mouse
or other peripheral is a detriment to the rate at which a developer's
thoughts become code.

Vim has a logical, structured command language. When a beginner is learning
the editor she may feel like it is impossible to understand all the key
commands. However, the commands stack together in a logical way so that over
time the editor becomes predictable.

Configuring Vim with a Vimrc file

The Vimrc file is used to configure the Vim editor. A Vimrc file can range
from nothing in it to very complicated with hundreds or thousands of lines
of configuration commands.

Here's a short, commented example .vimrc file I use for Python development
to get a feel for some of the configuration statements:

" enable syntax highlighting
syntax enable
" show line numbers
set number
" set tabs to have 4 spaces
set ts=4
" indent when moving to the next line while writing code
set autoindent
" expand tabs into spaces
set expandtab
" when using the >> or << commands, shift lines by 4 spaces
set shiftwidth=4
" show a visual line under the cursor's current line
set cursorline
" show the matching part of the pair for [] {} and ()
set showmatch
" enable all Python syntax highlighting features
let python_highlight_all = 1

Here is how these configuration options look with a dark background on
Mac OS X while editing the markdown for this webpage (how meta!).

The Vimrc file lives under the home directory of the user account running
Vim. For example, when my user account is 'matt', on Mac OS X my Vimrc
file is found at /Users/matt/.vimrc. On Ubuntu Linux my .vimrc file
can be found within the /home/matt/ directory.

If a Vimrc file does not already exist, just create it within the user's
home directory and it will be picked up by Vim the next time you open the
editor.

Vim tutorials

Vim has a reputation for a difficult learning curve, but it's much easier
to get started with these tutorials.

Learn Vim Progressively
is a wonderful tutorial that follows the path I took when learning Vim:
learn just enough to survive with it as your day-to-day editor then begin
adding more advanced commands on top.

Why Atom Can't Replace Vim
discusses one of Vim's core principles: command composability. Vim has
a language where simple commands are combined to execute more advanced
operations. For example, in command mode,$ moves to the end of a line.
When $ is preceded by d then everything to the end of the line is
deleted. Over time the simple commands become intuitive and the
combinations become more powerful than having distinct commands such as
a drop-down menu with a specific option to delete all text until the end
of the line.

Vim as a Language
explains the language syntax and how you can build up over time to master
the editor.

Ten years of Vim
provides an insightful retrospective on one experienced developer's
journey with using Vim as a primary text editor and development
environment. I found the part about going overboard with plugins before
switching back to a simpler configuration fascinating because it is
the same path I've found myself taking as I approach my own ten year
mark with Vim.

Vim Adventures is a cute, fun browser-based
game that helps you learn Vim commands by playing through the adventure.

In Vim: revisited the
author explains his on-again off-again relationship with using Vim. He then
shows how he configures and uses the editor so it sticks as his primary
code editing tool.

Things About Vim I Wish I Knew Earlier
explores the lessons one developer learned while exclusively using Vim
for several years. The author includes using relative instead of absolute
line numbering, setting numerous configuration options and fuzzy finding
to quickly open files in other directories rather than expanding the
whole path.

Vimrc resources

These are a few resources for learning how to structure a .vimrc file. I
recommend adding configuration options one at a time to test them
individually instead of going whole hog with a Vimrc you are unfamiliar with.

A Good Vimrc is a fantastic,
detailed overview and opinionated guide to configuring Vim. Highly
recommended for new and experienced Vim users.

Vim and Python shows
and explains many Python-specific .vimrc options.

Vim installation guides

The easiest way to install Vim on Windows 7+ is to download and run the
gvim74.exe file.

On Linux make sure to install the
vim package with
sudo apt-get install vim.

If you're using PyCharm as your IDE you won't need to install Vim as a
separate text editor - instead use the
IdeaVim PyCharm plugin to get
Vim keybindings, visual/insert mode, configuration with ~/.ideavimrc and
other Vim emulation features.

Using Vim as a Python IDE

Once you get comfortable with Vim as an editor, there are several
configuration options and plugins you can use to enhance your Python
productivity. These are the resources and tutorials to read when you're
ready to take that step.

Vim Plugin resources

Getting more from Vim with plugins
provides a list of plugins with a description for each one on its
usefulness. The comments at the bottom are also interesting as people have
suggested alternatives to some of the plugins mentioned in the post.

Powerline is a popular statusline
plugin for Vim that works with both Python 2 and 3.

VimAwesome is a directory of Vim plugins sourced
from Vim.org, GitHub and user submissions.

Vim Plugin Managers

If you use many Vim plugins together it is really handy to have a plugin
managers to sort out all of the dependencies. The following plugin managers
are the most commonly-used ones in the Vim ecosystem.