"pydoc.vim: pydoc integration for vim "performs searches and can display the documentation of python modules "Author: André Kelpe "Author: Romain Chossart "Author: Matthias Vogelgesang "http://www.vim.org/scripts/script.php?script_id=910 "This plugin integrates the pydoc into vim. You can view the "documentation of a module by using :Pydoc foo.bar.baz or search "a word (uses pydoc -k) in the documentation by typing PydocSearch "foobar. You can also view the documentation of the word under the "cursor by pressing pw or the WORD (see :help WORD) by pressing "pW. "This is very useful if you want to jump to a module which was found by "PydocSearch. To have a browser like feeling you can use u and CTRL-R to "go back and forward, just like editing normal text. "If you want to use the script and pydoc is not in your PATH, just put a "line like " let g:pydoc_cmd = \"/usr/bin/pydoc" (without the backslash!!) "in your .vimrc "pydoc.vim is free software, you can redistribute or modify "it under the terms of the GNU General Public License Version 2 or any "later Version (see http://www.gnu.org/copyleft/gpl.html for details). "Please feel free to contact me. set switchbuf=useopen function! ShowPyDoc(name, type) if !exists('g:pydoc_cmd') let g:pydoc_cmd = 'pydoc' endif if bufloaded("__doc__") >0 let l:buf_is_new = 0 else let l:buf_is_new = 1 endif if bufnr("__doc__") >0 execute "sb __doc__" else execute 'split __doc__' endif setlocal noswapfile set buftype=nofile setlocal modifiable normal ggdG " remove function/method arguments let s:name2 = substitute(a:name, '(.*', '', 'g' ) " remove all colons let s:name2 = substitute(s:name2, ':', '', 'g' ) if a:type==1 execute "silent read ! " . g:pydoc_cmd . " " . s:name2 else execute "silent read ! " . g:pydoc_cmd . " -k " . s:name2 endif setlocal nomodified set filetype=man normal 1G if !exists('g:pydoc_wh') let g:pydoc_wh = 10 end resize -999 execute "silent resize +" . g:pydoc_wh if !exists('g:pydoc_highlight') let g:pydoc_highlight = 1 endif if g:pydoc_highlight == 1 call Highlight(s:name2) endif let l:line = getline(2) if l:line =~ "^no Python documentation found for.*$" if l:buf_is_new execute "bd!" else normal u endif redraw echohl WarningMsg | echo l:line | echohl None endif endfunction "highlighting function! Highlight(name) execute "sb __doc__" set filetype=man "syn on execute 'syntax keyword pydoc '.a:name hi pydoc gui=reverse endfunction "mappings au FileType python,man map pw :call ShowPyDoc('', 1) au FileType python,man map pW :call ShowPyDoc('', 1) au FileType python,man map pk :call ShowPyDoc('', 0) au FileType python,man map pK :call ShowPyDoc('', 0) " remap the K (or 'help') key nnoremap K :call ShowPyDoc(expand(""), 1) "commands command! -nargs=1 Pydoc :call ShowPyDoc('', 1) command! -nargs=* PydocSearch :call ShowPyDoc('', 0)