The Emacs
plugin is maintained separately. Installation directions can be found here: https://github.com/paetzke/py-yapf.el
The vim
plugin allows you to reformat a range of code. Copy plugin
and autoload
directories into your ~/.vim
or use :packadd
in Vim 8. Or use a plugin manager like Plug or Vundle:
" Plug Plug 'google/yapf', { 'rtp': 'plugins/vim', 'for': 'python' } " Vundle Plugin 'google/yapf', { 'rtp': 'plugins/vim' }
You can add key bindings in the .vimrc
file:
map <C-Y> :call yapf#YAPF()<cr> imap <C-Y> <c-o>:call yapf#YAPF()<cr>
Alternatively, you can call the command YAPF
. If you omit the range, it will reformat the whole buffer.
example:
:YAPF " formats whole buffer :'<,'>YAPF " formats lines selected in visual mode
The Sublime Text
plugin is also maintained separately. It is compatible with both Sublime Text 2 and 3.
The plugin can be easily installed by using Sublime Package Control. Check the project page of the plugin for more information: https://github.com/jason-kane/PyYapf
The git
pre-commit hook automatically formats your Python files before they are committed to your local repository. Any changes yapf
makes to the files will stay unstaged so that you can diff them manually.
To install, simply download the raw file and copy it into your git hooks directory:
# From the root of your git project. $ curl -o pre-commit.sh https://raw.githubusercontent.com/google/yapf/main/plugins/pre-commit.sh $ chmod a+x pre-commit.sh $ mv pre-commit.sh .git/hooks/pre-commit
Plugin for Textmate 2
requires yapf
Python package installed on your system:
$ pip install yapf
Also, you will need to activate Python
bundle from Preferences > Bundles
.
Finally, create a ~/Library/Application Support/TextMate/Bundles/Python.tmbundle/Commands/YAPF.tmCommand
file with the following content:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>beforeRunningCommand</key> <string>saveActiveFile</string> <key>command</key> <string>#!/bin/bash TPY=${TM_PYTHON:-python} "$TPY" "/usr/local/bin/yapf" "$TM_FILEPATH"</string> <key>input</key> <string>document</string> <key>name</key> <string>YAPF</string> <key>scope</key> <string>source.python</string> <key>uuid</key> <string>297D5A82-2616-4950-9905-BD2D1C94D2D4</string> </dict> </plist>
You will see a new menu item Bundles > Python > YAPF
.