*pymode.txt* *python-mode.txt* Python-mode for vim! ____ _ _ ____ _ _ _____ _ _ __ __ _____ ____ ____ ~ ( _ \( \/ )(_ _)( )_( )( _ )( \( )___( \/ )( _ )( _ \( ___) ~ )___/ \ / )( ) _ ( )(_)( ) ((___)) ( )(_)( )(_) ))__) ~ (__) (__) (__) (_) (_)(_____)(_)\_) (_/\/\_)(_____)(____/(____) ~ Version: 0.6.9 ============================================================================== CONTENTS *Python-mode-contents* 1.Intro...................................|PythonMode| 2.Options.................................|PythonModeOptions| 2.1.Customisation details.............|PythonModeOptionsDetails| 2.2.Modeline..........................|PythonModeModeline| 3.Default Keys............................|PythonModeKeys| 4.Commands................................|PythonModeCommands| 5.FAQ.....................................|PythonModeFAQ| 6.Credits.................................|PythonModeCredits| 7.License.................................|PythonModeLicense| ============================================================================== 1. Intro ~ *PythonMode* Python-mode is a vim plugin that allows you to use the pylint, rope, and pydoc libraries in vim to provide features like python code bug checking, refactoring, and some other useful things. This plugin allow you create python code in vim very easily. There is no need to install the pylint or rope libraries on your system. ============================================================================== 2. Options ~ *PythonModeOptions* Note: Pylint options (ex. disable messages) may be defined in '$HOME/pylint.rc' See pylint documentation. This script provides the following options that can customise the behaviour of PythonMode. These options should be set in your vimrc. |'pymode_paths'| Additional python paths for pymode |'pymode_doc'| Turns off the documentation script |'pymode_doc_key'| Key for show documentation |'pymode_run'| Turns off the run code script |'pymode_run_key'| Key for run python code |'pymode_lint'| Turns off pylint script |'pymode_lint_checker'| Switch code checkers (pylint, pyflakes, pep8, mccabe) |'pymode_lint_ignore'| Skip errors and warnings |'pymode_lint_select'| Select errors and warnings |'pymode_lint_onfly'| Run linter on the fly |'pymode_lint_config'| Filepath to pylint configuration |'pymode_lint_write'| Check code every save |'pymode_lint_cwindow'| Show cwindow |'pymode_lint_message'| Show current line errors in bottom |'pymode_lint_signs'| Place signs |'pymode_lint_jump'| Auto jump to first error |'pymode_lint_hold'| Hold cursor in current window |'pymode_lint_minheight'| Minimal height of pylint error window |'pymode_lint_mccabe_complexity'| Maximum allowed mccabe complexity |'pymode_lint_maxheight'| Maximal height of pylint error window |'pymode_rope'| Turns off rope script |'pymode_folding'| Turns on/off python folding |'pymode_breakpoint'| Turns off breakpoint script |'pymode_breakpoint_key'| Key for breakpoint |'pymode_virtualenv'| Turns off virtualenv |'pymode_utils_whitespaces'| Remove unused whitespaces |'pymode_syntax'| Turns off the custom syntax highlighting |'pymode_indent'| Enable/Disable pymode PEP8 indentation |'pymode_options'| Set default pymode options for python codding |'pymode_motion'| Enable pymode motion stuff Note: Also see |ropevim.txt| ------------------------------------------------------------------------------ 2.1. Customisation details ~ *PythonModeOptionsDetails* To enable any of the options below you should put the given line in your '$HOME/.vimrc'. See |vimrc-intro|. ------------------------------------------------------------------------------ 2.2. Modeline ~ *PythonModeModeline* Feature like VIM modeline `:help modeline`. Allow changing pymode options for edited file. Pymode modeline should always be the last line in the file and look like: > # pymode:lint_ignore=E0202:doc=0:lint_write=0 < Examples: Disable folding on current file: > # pymode:folding=0 < Set linters and mccabe complexity. > # pymode:lint_checker=pip,mccabe:lint_mccabe_complexity=10 < This changes will work only in current buffer. ------------------------------------------------------------------------------ *'pymode_paths'* Values: List of strings Default: []. This option set additional python import paths ------------------------------------------------------------------------------ *'pymode_doc'* Values: 0 or 1. Default: 1. If this option is set to 0 then the doc script is disabled. ------------------------------------------------------------------------------ *'pymode_doc_key'* Default: 'K'. Set key for show python documentation. ------------------------------------------------------------------------------ *'pymode_run'* Values: 0 or 1. Default: 1. If this option is set to 0 then run script is disabled. ------------------------------------------------------------------------------ *'pymode_run_key'* Default: 'r'. Set key for run python code. ------------------------------------------------------------------------------ *'pymode_lint'* Values: 0 or 1. Default: 1. If this option is set to 0 then the pylint script is disabled. ------------------------------------------------------------------------------ *'pymode_lint_checker'* Values: "pylint", "pyflakes", "pep8", "mccabe" You can set many checkers. E.g. "pyflakes,pep8,mccabe" ~ Default: "pyflakes,pep8,mccabe". This option sets code checkers. ------------------------------------------------------------------------------ *'pymode_lint_ignore'* Values: IDs of errors, separated by commas or empty strings E.g. "E501,W002", "E2,W" (Skip all Warnings and Errors startswith E2) and etc ~ Default: "E501". Skip errors and warnings. See also: |'pymode_lint_select'|, |'pymode_lint_config'| ------------------------------------------------------------------------------ *'pymode_lint_select'* Values: IDs of errors, separated by commas or empty strings E.g. "W002,C" Force W002 and all C-ids ~ Default: "". Select errors and warnings. See also: |'pymode_lint_ignore'|, |'pymode_lint_config'| ------------------------------------------------------------------------------ *'pymode_lint_onfly'* Values: 0 or 1 Default: 0 This option enables "on the fly" code checking ------------------------------------------------------------------------------ *'pymode_lint_config'* Values: 'Path to pylint configuration file' Default: "$HOME/.pylintrc" This option sets the path to the pylint configuration file. If the file is not found, use the 'pylintrc' file from python-mode sources. See also: |'pymode_lint_ignore'|, |'pymode_lint_select'| ------------------------------------------------------------------------------ *'pymode_lint_write'* Values: 0 or 1. Default: 1. If this option is set to 0, then pylint auto-checking on every save is disabled. ------------------------------------------------------------------------------ *'pymode_lint_cwindow'* Values: 0 or 1. Default: 1. If this option is set to 0 then pylint will not show cwindow. ------------------------------------------------------------------------------ *'pymode_lint_message'* Values: 0 or 1. Default: 1. If this option is set to 0 then pylint will not show errors at bottom. ------------------------------------------------------------------------------ *'pymode_lint_signs'* Values: 0 or 1. Default: 1. If this option is set to 0 then pylint will not place error signs. ------------------------------------------------------------------------------ *'pymode_lint_jump'* Values: 0 or 1. Default: 0. If this option is set to 0 then pylint will not jump to the first error. ------------------------------------------------------------------------------ *'pymode_lint_hold'* Values: 0 or 1. Default: 0. If this option is set to 0 then pylint will switch on the quickfix window when it opens. Doesn't work when |'pymode_lint_jump'| enabled. ------------------------------------------------------------------------------ *'pymode_lint_minheight'* Values: int Default: 3. Set minimal height for the pylint cwindow. ------------------------------------------------------------------------------ *'pymode_lint_mccabe_complexity'* Values: int Default: 8. Set minimal complexity for the mccabe linter. ------------------------------------------------------------------------------ *'pymode_lint_maxheight'* Values: int Default: 6. Set maximal height for the pylint cwindow. ------------------------------------------------------------------------------ *'pymode_rope'* Values: 0 or 1. Default: 1. If this option is set to 0 then the rope script is disabled. ------------------------------------------------------------------------------ *'pymode_breakpoint'* Values: 0 or 1. Default: 1. If this option is set to 0 then the breakpoint script is disabled. ------------------------------------------------------------------------------ *'pymode_breakpoint_key'* Default: 'b'. Key for setting/unsetting breakpoints. ------------------------------------------------------------------------------ *'pymode_virtualenv'* Values: 0 or 1. Default: 1. If this option is set to 0 then virtualenv support is disabled. ------------------------------------------------------------------------------ *'pymode_utils_whitespaces'* Values: 0 or 1. Default: 1. Auto-remove unused whitespaces. ------------------------------------------------------------------------------ *'pymode_syntax'* Values: 0 or 1. Default: 1. If this option is set to 0 then the custom syntax highlighting will not be used. ------------------------------------------------------------------------------ *'pymode_indent'* Values: 0 or 1. Default: 1. If this option is set to 1, pymode will enable python indentation support ------------------------------------------------------------------------------ *'pymode_folding'* Values: 0 or 1. Default: 1. If this option is set to 1, pymode will enable python-folding. ------------------------------------------------------------------------------ *'pymode_options'* Values: 0 or 1. Default: 1. If this option is set to 1, pymode will enable the following options for python buffers: > setlocal complete+=t setlocal formatoptions-=t setlocal number setlocal nowrap setlocal textwidth=80 < ------------------------------------------------------------------------------ *'pymode_motion'* Values: 0 or 1. Default: 1. If this option is set to 1, pymode will enable some python motions. Pymode-motion is beta. ================ ============================ Key Command ================ ============================ [[ Jump to previous class or function (normal, visual, operator modes) ]] Jump to next class or function (normal, visual, operator modes) [M Jump to previous class or method (normal, visual, operator modes) ]M Jump to next class or method (normal, visual, operator modes) aC Select a class. Ex: vaC, daC, yaC, caC (normal, operator modes) iC Select inner class. Ex: viC, diC, yiC, ciC (normal, operator modes) aM Select a function or method. Ex: vaM, daM, yaM, caM (normal, operator modes) iM Select inner function or method. Ex: viM, diM, yiM, ciM (normal, operator modes) ================ ============================ ============================================================================== 3. Default Keys ~ *PythonModeKeys* To redefine keys, see: |PythonModeOptions| ================ ============================ Key Command ================ ============================ K Show python docs for current word under cursor C-Space Rope code assist r Run current buffer b Set breakpoints [[ Jump to previous class or function (normal, visual, operator modes) ]] Jump to next class or function (normal, visual, operator modes) [M Jump to previous class or method (normal, visual, operator modes) ]M Jump to next class or method (normal, visual, operator modes) aC C Operation with a class. Ex: vaC, daC, dC, yaC, yC, caC, cC (normal, operator modes) iC Operation with inner class. Ex: viC, diC, yiC, ciC (normal, operator modes) aM M Operation with function or method. Ex: vaM, daM, dM, yaM, yM, caM, cM (normal, operator modes) iM Operation with inner function or method. Ex: viM, diM, yiM, ciM (normal, operator modes) ================ ============================ Note: Also see: |RopeShortcuts| ============================================================================== 4. Commands ~ *PythonModeCommands* *:Pydoc* *Pydoc* Show python documentation *:PyLintToggle* *PyLintToggle* Enable, disable pylint *:PyLint* *PyLint* Check current buffer *:PyLintAuto* *PyLintAuto* Automatically fix PEP8 errors in the current buffer *:Pyrun* *Pyrun* Run current buffer ============================================================================== 5. FAQ ~ *PythonModeFAQ* Python-mode doesn't work ------------------------ Run ":call pymode#troubleshooting#Test()" and fix the warning or send me the output. Rope completion is very slow ---------------------------- To work, rope_ creates a service directory: `.ropeproject`. If |'pymode_rope_guess_project'| is set on (as it is by default) and `.ropeproject` is not found in the current dir, rope will scan for `.ropeproject` in every dir in the parent path. If rope finds `.ropeproject` in parent dirs, rope sets project for all child dir and the scan may be slow for many dirs and files. Solutions: - Disable |'pymode_rope_guess_project'| to make rope always create `.ropeproject` in the current dir. - Delete `.ropeproject` from the parent dir to make rope create `.ropeproject` in the current dir. - Press `po` or `:RopeOpenProject` to force rope to create `.ropeproject` in the current dir. Pylint check is very slow ------------------------- In some projects pylint_ may check slowly, because it also scan imported modules if possible. Try using pyflakes: see |'pymode_lint_checker'|. You may set |exrc| and |secure| in your |vimrc| to auto-set custom settings from `.vimrc` from your projects directories. > Example: On Flask projects I automatically set 'g:pymode_lint_checker = "pyflakes"'. On Django 'g:pymode_lint_checker = "pylint"' < OSX cannot import urandom ------------------------- See: https://groups.google.com/forum/?fromgroups=#!topic/vim_dev/2NXKF6kDONo The sequence of commands that fixed this: > brew unlink python brew unlink macvim brew remove macvim brew install -v --force macvim brew link macvim brew link python < ============================================================================== 6. Credits ~ *PythonModeCredits* Kirill Klenov http://klen.github.com/ http://github.com/klen/ Rope Copyright (C) 2006-2010 Ali Gholami Rudi Copyright (C) 2009-2010 Anton Gritsay Pylint Copyright (C) 2003-2011 LOGILAB S.A. (Paris, FRANCE). http://www.logilab.fr/ Pyflakes: Copyright (c) 2005 Divmod, Inc. http://www.divmod.com/ PEP8: Copyright (c) 2006 Johann C. Rocholl http://github.com/jcrocholl/pep8 autopep8: Copyright (c) 2012 hhatto https://github.com/hhatto/autopep8 Python syntax for vim: Copyright (c) 2010 Dmitry Vasiliev http://www.hlabs.spb.ru/vim/python.vim PEP8 VIM indentation Copyright (c) 2012 Hynek Schlawack http://github.com/hynek/vim-python-pep8-indent ============================================================================== 7. License ~ *PythonModeLicense* Python-mode is released under the GNU lesser general public license. See: http://www.gnu.org/copyleft/lesser.html If you like this plugin, you can send me a postcard :) My address is: "Russia, 143401, Krasnogorsk, Shkolnaya 1-19" to "Kirill Klenov". Thanks for your support! ------------------------------------------------------------------------------ vim:tw=78:ts=8:ft=help:norl: