jedi-vim 0,0,1,1,0,3,4,1 travis-ci

Using the jedi autocompletion library for VIM.

2 years after MIT

################################################# jedi-vim - awesome Python autocompletion with VIM #################################################

.. image:: https://travis-ci.org/davidhalter/jedi-vim.svg?branch=master :target: https://travis-ci.org/davidhalter/jedi-vim :alt: Travis-CI build status

jedi-vim is a VIM binding to the autocompletion library Jedi <http://github.com/davidhalter/jedi>_.

Here are some pictures:

.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_complete.png

Completion for almost anything (Ctrl+Space).

.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_function.png

Display of function/class bodies, docstrings.

.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_pydoc.png

Documentation (Pydoc) support (with highlighting, Shift+k).

There is also support for goto and renaming.

Get the latest from github <http://github.com/davidhalter/jedi-vim>_.

Documentation

Documentation is available in your vim: :help jedi-vim. You can also look it up on github <http://github.com/davidhalter/jedi-vim/blob/master/doc/jedi-vim.txt>_.

You can read the Jedi library documentation here <http://jedi.readthedocs.io/en/latest/>_.

If you want to report issues, just use the github issue tracker. In case of questions about the software, please use stackoverflow <https://stackoverflow.com>_ and tag your question with jedi-vim.

Contributing

We love Pull Requests! Read the instructions in CONTRIBUTING.md.

Features

The Jedi library understands most of Python's core features. From decorators to generators, there is broad support.

Apart from that, jedi-vim supports the following commands

  • Completion <C-Space>
  • Goto assignments <leader>g (typical goto function)
  • Goto definitions <leader>d (follow identifier as far as possible, includes imports and statements)
  • Show Documentation/Pydoc K (shows a popup with assignments)
  • Renaming <leader>r
  • Usages <leader>n (shows all the usages of a name)
  • Open module, e.g. :Pyimport os (opens the os module)

Installation

Requirements

You need a VIM version that was compiled with Python 2.6 or later (+python or +python3), which is typical for most distributions on Linux. You can check this from within VIM using :python3 import sys; print(sys.version) (use :python for Python 2).

Manual installation

You might want to use pathogen <https://github.com/tpope/vim-pathogen> or Vundle <https://github.com/gmarik/vundle> to install jedi-vim.

The first thing you need after that is an up-to-date version of Jedi. You can either install it via pip install jedi or with git submodule update --init in your jedi-vim repository.

Example installation command using Pathogen:

.. code-block:: sh

cd ~/.vim/bundle/ && git clone --recursive https://github.com/davidhalter/jedi-vim.git

Installation with your distribution

On Arch Linux, you can also install jedi-vim from official repositories as vim-jedi <https://www.archlinux.org/packages/community/any/vim-jedi/>. It is also available on Debian (≥8) <https://packages.debian.org/vim-python-jedi> and Ubuntu (≥14.04) <http://packages.ubuntu.com/vim-python-jedi> as vim-python-jedi. On Fedora Linux, it is available as vim-jedi <https://apps.fedoraproject.org/packages/vim-jedi>.

Please note that this version might be quite old compared to using jedi-vim from Git.

Caveats

Note that the python-mode <https://github.com/klen/python-mode>_ VIM plugin seems to conflict with jedi-vim, therefore you should disable it before enabling jedi-vim.

To enjoy the full features of jedi-vim, you should have VIM >= 7.3, compiled with +conceal (which is not the case on some platforms, including OS X). If your VIM does not meet these requirements, the parameter recommendation list may not appear when you type an open bracket after a function name. Please read the documentation <http://github.com/davidhalter/jedi-vim/blob/master/doc/jedi-vim.txt>_ for details.

Settings

Jedi is by default automatically initialized. If you don't want that I suggest you disable the auto-initialization in your .vimrc:

.. code-block:: vim

let g:jedi#auto_initialization = 0

There are also some VIM options (like completeopt and key defaults) which are automatically initialized, but you can skip this:

.. code-block:: vim

let g:jedi#auto_vim_configuration = 0

You can make jedi-vim use tabs when going to a definition etc:

.. code-block:: vim

let g:jedi#use_tabs_not_buffers = 1

If you are a person who likes to use VIM-splits, you might want to put this in your .vimrc:

.. code-block:: vim

let g:jedi#use_splits_not_buffers = "left"

This options could be "left", "right", "top", "bottom" or "winwidth". It will decide the direction where the split open.

Jedi automatically starts the completion, if you type a dot, e.g. str., if you don't want this:

.. code-block:: vim

let g:jedi#popup_on_dot = 0

Jedi selects the first line of the completion menu: for a better typing-flow and usually saves one keypress.

.. code-block:: vim

let g:jedi#popup_select_first = 0

Jedi displays function call signatures in insert mode in real-time, highlighting the current argument. The call signatures can be displayed as a pop-up in the buffer (set to 1, the default), which has the advantage of being easier to refer to, or in Vim's command line aligned with the function call (set to 2), which can improve the integrity of Vim's undo history.

.. code-block:: vim

let g:jedi#show_call_signatures = "1"

Here are a few more defaults for actions, read the docs (:help jedi-vim) to get more information. If you set them to "", they are not assigned.

.. code-block:: vim

NOTE: subject to change!

let g:jedi#goto_command = "<leader>d"
let g:jedi#goto_assignments_command = "<leader>g"
let g:jedi#goto_definitions_command = ""
let g:jedi#documentation_command = "K"
let g:jedi#usages_command = "<leader>n"
let g:jedi#completions_command = "<C-Space>"
let g:jedi#rename_command = "<leader>r"

Finally, if you don't want completion, but all the other features, use:

.. code-block:: vim

let g:jedi#completions_enabled = 0

FAQ

I don't want the docstring window to popup during completion

This depends on the completeopt option. Jedi initializes it in its ftplugin. Add the following line to your .vimrc to disable it:

.. code-block:: vim

autocmd FileType python setlocal completeopt-=preview

I want to do autocompletion

Don't even think about changing the Jedi command to <Tab>, use supertab <https://github.com/ervandew/supertab>_!

The completion is waaay too slow!

Completion of complex libraries (like Numpy) should only be slow the first time you complete it. After that, the results should be cached and very fast.

If it's still slow, in case you've installed the python-mode VIM plugin, disable it. It seems to conflict with jedi-vim. See issue #163 <https://github.com/davidhalter/jedi-vim/issues/163>__.

Testing

jedi-vim is being tested with a combination of vspec <https://github.com/kana/vim-vspec> and py.test <http://pytest.org/>.

The tests are in the test subdirectory, you can run them calling::

py.test

The tests are automatically run with travis <https://travis-ci.org/davidhalter/jedi-vim>_.

Related Repositories

syntastic

syntastic

Syntax checking hacks for vim ...

syntastic

syntastic

Syntax checking hacks for vim ...

jedi

jedi

Awesome autocompletion and static analysis library for python. ...

vim-config

vim-config

Lean mean (Neo)Vim machine. Use with Neovim v0.1.5+ or Vim v7.4+ ...

vim-mucomplete

vim-mucomplete

Chained completion that works the way you want! ...


Top Contributors

davidhalter blueyed wilywampa littleq0903 dbrgn runiq heavenshell mattn fuhrysteve inside itchyny MagicRedDeer petobens ricobl ming13 freeo gotgenes coot toupeira tweekmonster lodagro andviro zekzekus justinmk mozbugbox np1 tndoan justincheevers d7415 aliev

Releases

-   0.8.0 zip tar
-   0.7.0 zip tar
-   0.5.0 zip tar