Python syntax highlighting for Vim

December 2, 2020 ยท View on GitHub

This is an enhanced version of the original Vim 6.1 Python syntax highlighting python.vim by Neil Schemenauer.

Features

  • Enhanced highlighting for:
    • Strings
    • Special symbols inside strings
    • Numeric constants
  • Added support for:
    • Python 3
    • Numbers with underscores
    • String %-formatting and f-strings
    • Magic comments: source code encoding and shebangs
    • New exceptions and builtins
    • Doctests
    • @decorator syntax
    • Class variables such as self, cls, and mcs
    • Operators
  • Highlighting of the following errors:
    • Invalid symbols in source file
    • Invalid numeric constants
    • Invalid %-formatting inside strings
    • Invalid variable names
    • Invalid operators
    • Mixing spaces and tabs
    • Trailing spaces (Enabled with g:python_highlight_space_errors)
  • Commands for easy switching between versions

Folding is done by the plugin SimpylFold.

How to install

Use one of the following plugin managers:

Configuration

Option variables

Set variable to 1 to enable or 0 to disable.

For example to enable all syntax highlighting features you can add the following command to your ~/.config/nvim/init.vim or ~/.vimrc:

let g:python_highlight_all = 1
VariableDescriptionDefault
g:python_version_2Python 2 mode0
b:python_version_2Python 2 mode (buffer local)0
g:python_highlight_builtinsHighlight builtin objects, types, and functions0
g:python_highlight_builtin_objsHighlight builtin objects only0
g:python_highlight_builtin_typesHighlight builtin types only0
g:python_highlight_builtin_funcsHighlight builtin functions only0
g:python_highlight_builtin_funcs_kwargHighlight builtin functions when used as kwarg1
g:python_highlight_exceptionsHighlight standard exceptions0
g:python_highlight_string_formattingHighlight % string formatting0
g:python_highlight_string_formatHighlight syntax of str.format syntax0
g:python_highlight_string_templatesHighlight syntax of string.Template0
g:python_highlight_indent_errorsHighlight indentation errors0
g:python_highlight_space_errorsHighlight trailing spaces0
g:python_highlight_doctestsHighlight doc-tests0
g:python_highlight_func_callsHighlight functions calls0
g:python_highlight_class_varsHighlight class variables self, cls, and mcs0
g:python_highlight_operatorsHighlight all operators0
g:python_highlight_allEnable all highlight options above, except for previously set.0
g:python_highlight_file_headers_as_commentsHighlight shebang and coding headers as comments0
g:python_slow_syncDisable for slow machines1

Commands

CommandDescription
Python2SyntaxSwitch to Python 2
Python3SyntaxSwitch to Python 3