Created
April 29, 2012 18:08
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
按大写K在pydoc中搜索选定的词
也可以用Pydoc和Pydocs命令分别查看模块文档和搜索关键字文档.
适用于gvim全屏的模式下
请记得一定改34行的pydoc的位置