In eclipse you can hit Ctrl+Shift+o to automatically import all the libraries you reference in your code. Is there any similar plugin for vim to have this feature with python?
Is there a plugin for vim to auto-import python libraries? [closed]
Asked Answered
Thanks for the Eclipse tip, didn't know about this. –
Grundy
Are you looking to manipulate the libraries as objects or just access/read the files? For access there is ctags and I can also publish a getfile 'gf' enhancement script for python if that is what you are looking for. –
Appointive
@michael: What I mean is that if I type "itertools.cycle(...)", it should look at the top of the file and automatically add "import itertools" if it is not already present. –
Masseuse
It also removes unused imports. It could potentially arrange them in pep8 order too. Seems quite possible to implement via pyflakes. –
Masseuse
ahh, I was looking for one as well at one stage but couldn't find anything. I ended up hacking one together based on your tags file here vim.org/scripts/script.php?script_id=2780. It works good for 3rd party source libs doesn't handle builtins. I was going to get around to writing a tags script for builtins to handle this. –
Appointive
@michael: Hmm, builtins are some of the most useful. There must be an easy way... –
Masseuse
See also: Vim plugin for automatically generating Python import statements (without using Rope) - Stack Overflow –
Propose
There is ropevim. It is available on pypi as well
The autoimport (adds missing imports) and organizeimport (reorder imports) features work well, but it is a little invasive at times (it will create a .ropeproject folder in your project). Rope code completion is also quite good so I use standard code completion with tab, and when it's not enough, I use ctrl-space to use ropevim autocompletion.
Here are some of my mappings with ropevim:
" Rope AutoImport and OrganizeImport
nnoremap <C-S-o> :RopeOrganizeImports<CR>0<CR><CR>
nnoremap <C-S-i> :RopeAutoImport<CR>
" Rope AutoComplete
let ropevim_vim_completion = 1
let ropevim_extended_complete = 1
let g:ropevim_autoimport_modules = ["os.*","traceback","django.*","lxml.etree","lxml.*"]
imap <c-space> <C-R>=RopeCodeAssistInsertMode()<CR>
" Rope Menu
menu Python.Create\ Package :RopeCreatePackage<CR>
menu Python.Create\ Module :RopeCreateModule<CR>
Hi, I found autoimport doesn't work for django. For example, if I type <C-S-i> when cursor is on HttpResponse, ropevim wouldn't be able to find the name and import it. –
Embowel
I could not get ropevim to work using macvim –
Brabant
There is a command line tool called mr.igor
that you could install. There are instructions for hooking it up to vim on the pypi page:
Looks like this no longer works in Python 3. –
Propose
I'm using https://github.com/mgedmin/python-imports.vim together with gutentags. Good enough for me (and better than nothing).
© 2022 - 2024 — McMap. All rights reserved.