| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549 |
- *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: '<leader>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: '<leader>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
- <leader>r Run current buffer
- <leader>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* <args> *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 `<C-x>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 <johann@rocholl.net>
- http://github.com/jcrocholl/pep8
- autopep8:
- Copyright (c) 2012 hhatto <hhatto.jp@gmail.com>
- 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 <hs@ox.cx>
- 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:
|