Sunday, May 8, 2016

The Best and Simple Way to python VIM autocompletion

pythonvim

Thanks for this blog, that solve my problem.

https://blog.cloudpack.jp/2016/03/14/cloudpack-osaka-blog-code-completion-setting-of-python-on-vim/

I represent the above blog, and try to use more simple way to get the result, autocompletion for python.

download package

first of all download neobundle.vim

mkdir -p ~/.vim/bundle
git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

download jedi-vim

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

execute NeoBundleInstall

execute VIM and type the following command line.

:NeoBundleInstall

Edit the .VIMRC

go to root path and edit .vimrc

cd ~/
vim .vimrc

copy-paste the following to .vimrc

if 0 | endif
if has('vim_starting')
   if &compatible
      set nocompatible               " Be iMproved
   endif
  " Required:
  set runtimepath+=~/.vim/bundle/neobundle.vim/
endif
" Required:
call neobundle#begin(expand('~/.vim/bundle/'))
" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'
" My Bundles here:
" Refer to |:NeoBundle-examples|.
" Note: You don't set neobundle setting in .gvimrc!
call neobundle#end()
" Required:
"filetype plugin indent on
" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck



" Jedi for python
NeoBundleLazy "davidhalter/jedi-vim", {
    \ "autoload": { "filetypes": [ "python", "python3", "djangohtml"] }}
if ! empty(neobundle#get("jedi-vim"))
  let g:jedi#auto_initialization = 1
  let g:jedi#auto_vim_configuration = 1
  nnoremap [jedi] <Nop>
  xnoremap [jedi] <Nop>
  nmap <Leader>j [jedi]
  xmap <Leader>j [jedi]
  let g:jedi#completions_command = "<C-x>,<C-o>"
  let g:jedi#goto_assignments_command = "<C-g>"
  let g:jedi#goto_definitions_command = "<C-d>"
  let g:jedi#documentation_command = "<C-k>"
  let g:jedi#rename_command = "[jedi]r"
  let g:jedi#usages_command = "[jedi]n"
  let g:jedi#popup_select_first = 0
  let g:jedi#popup_on_dot = 0

  "autocmd FileType python setlocal completeopt-=preview
  " for w/ neocomplete
    if ! empty(neobundle#get("neocomplete.vim"))
        autocmd FileType python setlocal omnifunc=jedi#completions
        let g:jedi#completions_enabled = 0
        let g:jedi#auto_vim_configuration = 0
        let g:neocomplete#force_omni_input_patterns.python =
                        \ '\%([^. \t]\.\|^\s*@\|^\s*from\s.\+import \|^\s*from \|^\s*import \)\w*'
    endif
endif

syntax on;
if has("autocmd")
           autocmd BufRead *.txt set tw=78
              autocmd BufReadPost *
                    \ if line("'\"") > 0 && line ("'\"") <= line("$") |
                    \   exe "normal g'\"" |
                    \ endif
      endif
      set nocompatible
      set paste
      set viminfo='1000,<500
      set nowrap
      set nocp incsearch
      set shiftwidth=4
      set cinoptions=:0,p0,t0
      set cinwords=if,else,while,do,for,switch,case
      set hls
      set cindent
      " python auto-complete code
      " "autocmd FileType python setlocal et | setlocal sta | setlocal sw=4"
      " autocmd FileType python set et nu sw=4 ts=4

RESULT

Now you can use auto completion by using ctl-x ctl-o. where ctl is control button. You will see the following result.

More test

You can try another package that not belong to original python.

pip install simplejson

try ctl-x ctl-o, you can see the funtion of simplejson lib.

No comments:

Post a Comment