Skip to content

Instantly share code, notes, and snippets.

@hyacinthus
Created April 29, 2012 18:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hyacinthus/2552337 to your computer and use it in GitHub Desktop.
Save hyacinthus/2552337 to your computer and use it in GitHub Desktop.
pydoc plugin for vim. forked from http://www.vim.org/scripts/script.php?script_id=910 used in full screen vim and open the doc window in the right of the screen.
"pydoc.vim: pydoc integration for vim
"performs searches and can display the documentation of python modules
"Author: André Kelpe <efeshundertelf at googlemail dot com>
"Author: Romain Chossart <romainchossat at gmail dot com>
"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 <leader>pw or the WORD (see :help WORD) by pressing
"<leader>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 = 'python C:\Python32\Lib\pydoc.py'
endif
if bufloaded("__doc__") >0
let l:buf_is_new = 0
else
let l:buf_is_new = 1
endif
if bufnr("__doc__") >0
execute "vert sb __doc__"
else
execute 'vsplit __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
"changed here. open the window in the right of the screen and change it's width to 60.
if !exists('g:pydoc_wh')
let g:pydoc_wh = 60
end
execute "wincmd L"
execute "silent vert 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 <buffer> <leader>pw :call ShowPyDoc('<C-R><C-W>', 1)<CR>
au FileType python,man map <buffer> <leader>pW :call ShowPyDoc('<C-R><C-A>', 1)<CR>
au FileType python,man map <buffer> <leader>pk :call ShowPyDoc('<C-R><C-W>', 0)<CR>
au FileType python,man map <buffer> <leader>pK :call ShowPyDoc('<C-R><C-A>', 0)<CR>
" remap the K (or 'help') key
nnoremap <silent> <buffer> K :call ShowPyDoc(expand("<cword>"), 1)<CR>
"commands ...change the commands name more short
command! -nargs=1 Pydoc :call ShowPyDoc('<args>', 1)
command! -nargs=* Pydocs :call ShowPyDoc('<args>', 0)
@hyacinthus
Copy link
Author

按大写K在pydoc中搜索选定的词
也可以用Pydoc和Pydocs命令分别查看模块文档和搜索关键字文档.
适用于gvim全屏的模式下
请记得一定改34行的pydoc的位置

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment