美文网首页
Vim 下部署Python IDE

Vim 下部署Python IDE

作者: 一点萤火er | 来源:发表于2018-12-06 11:30 被阅读0次

    1 简述

    本文为记录在ubuntu16.04TLS环境下,将Vim打造成python IDE的部署手册。有关Vim的功能和使用方法,大家可以自行了解。网上虽然有很多的相关教程,但觉得欠缺一些关键信息,如具体环境、配置说明以及错误处理。因此,我想写一个既能完美部署Python IDE,又繁简适当的部署手册,一同和大家交流学习。

    2 环境

    不同环境下可能会存在一些不同。因此,我在这里详细的列出了我所使用的部署环境。

    • 操作系统:Ubuntu 16.04 TLS (Ubuntu14.04 同样适用);
    • Vim版本: 7.4 (2013. 8. 10);
    • Python版本:2.7 & 3.5 ;

    3 安装过程

    3.1 Vim版本号是否高于vim7.41578 ?

    (1) 若未安装vim,请先安装vim,在Terminal中输入:

    $ sudo apt-get update
    $ sudo apt-get install vim
    

    (2) 若已安装vim,在Terminal中输入下列命令,查看版本信息:

    $ vim --version
    

    我的版本信息显示为7.4,因此需要升级:


    vimv.png

    (3) 如果版本号小于vim7.41578,请先更新Vim,因为Ubuntu16.04及以下版本最高仅提供vim7.4,所以我们需要添加新的包,输入如下命令:

    $ sudo add-apt-repository ppa:jonathonf/vim
    $ sudo apt-get update
    $ sudo apt-get install vim
    

    更新后的版本信息为:


    vimup.png

    注:保证vim版本序号在vim7.41578+的主要原因,在于代码自动补全的插件包“YouCompleteMe”只有在相关版本之上才能够正确运行。否则,在运行插件时会出现如下错误:


    YoucompleteMeerror.png

    3.2 安装Vundle & 配置 vimrc

    (1) Vundle 是Vim的一款插件管理器。在Terminal中输入:

    $ sudo git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    

    建议使用默认路径‘~/.vim/bundle/Vundle.vim’。如果还没有安装git,请先安装:

    $ sudo apt-get install git
    

    (2) 创建Vundle配置文件.vimrc(是一个隐藏文件)

    $ touch ~/.vimrc
    

    (3) 配置vimrc,在terminal中输入:

    $ sudo vim ~/.vimrc
    

    即开始配置vim的插件信息。
    请将如下信息粘贴至该文件的开始。其中“代表注释行,是一些配置vimrc的一些提示信息。

    "vundle
    set nocompatible
    filetype off
    
    set rtp+=~/.vim/bundle/Vundle.vim
    set splitbelow
    set splitright
    set foldmethod=indent
    set foldlevel=99
    set encoding=utf-8
    
    call vundle#begin()
    
    Plugin 'VundleVim/Vundle.vim'
    "git interface
    Plugin 'tpope/vim-fugitive'
    "filesystem
    Plugin 'scrooloose/nerdtree'
    Plugin 'jistr/vim-nerdtree-tabs'
    Plugin 'kien/ctrlp.vim' 
    
    "html
    "  isnowfy only compatible with python not python3
    Plugin 'isnowfy/python-vim-instant-markdown'
    Plugin 'jtratner/vim-flavored-markdown'
    Plugin 'suan/vim-instant-markdown'
    Plugin 'nelstrom/vim-markdown-preview'
    "python sytax checker
    Plugin 'nvie/vim-flake8'
    Plugin 'vim-scripts/Pydiction'
    Plugin 'vim-scripts/indentpython.vim'
    Plugin 'scrooloose/syntastic'
    
    "auto-completion stuff
    "Plugin 'klen/python-mode'
    Plugin 'Valloric/YouCompleteMe'
    Plugin 'klen/rope-vim'
    "Plugin 'davidhalter/jedi-vim'
    Plugin 'ervandew/supertab'
    ""code folding
    Plugin 'tmhedberg/SimpylFold'
    
    "Colors!!!
    Plugin 'altercation/vim-colors-solarized'
    Plugin 'jnurmine/Zenburn'
    
    call vundle#end()
    
    filetype plugin indent on    " enables filetype detection
    let g:SimpylFold_docstring_preview = 1
    
    "autocomplete
    let g:ycm_autoclose_preview_window_after_completion=1
    
    "custom keys
    let mapleader=" "
    map <leader>g  :YcmCompleter GoToDefinitionElseDeclaration<CR>
    "
    call togglebg#map("<F5>")
    "colorscheme zenburn
    "set guifont=Monaco:h14
    
    let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree
    
    "I don't like swap files
    set noswapfile
    
    "turn on numbering
    set nu
    
    "python with virtualenv support
    py << EOF
    import os.path
    import sys
    import vim
    if 'VIRTUA_ENV' in os.environ:
      project_base_dir = os.environ['VIRTUAL_ENV']
      sys.path.insert(0, project_base_dir)
      activate_this = os.path.join(project_base_dir,'bin/activate_this.py')
      execfile(activate_this, dict(__file__=activate_this))
    EOF
    
    "it would be nice to set tag files by the active virtualenv here
    ":set tags=~/mytags "tags for ctags and taglist
    "omnicomplete
    autocmd FileType python set omnifunc=pythoncomplete#Complete
    
    "------------Start Python PEP 8 stuff----------------
    " Number of spaces that a pre-existing tab is equal to.
    au BufRead,BufNewFile *py,*pyw,*.c,*.h set tabstop=4
    
    "spaces for indents
    au BufRead,BufNewFile *.py,*pyw set shiftwidth=4
    au BufRead,BufNewFile *.py,*.pyw set expandtab
    au BufRead,BufNewFile *.py set softtabstop=4
    
    " Use the below highlight group when displaying bad whitespace is desired.
    highlight BadWhitespace ctermbg=red guibg=red
    
    " Display tabs at the beginning of a line in Python mode as bad.
    au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/
    " Make trailing whitespace be flagged as bad.
    au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/
    
    " Wrap text after a certain number of characters
    au BufRead,BufNewFile *.py,*.pyw, set textwidth=100
    
    " Use UNIX (\n) line endings.
    au BufNewFile *.py,*.pyw,*.c,*.h set fileformat=unix
    
    " Set the default file encoding to UTF-8:
    set encoding=utf-8
    
    " For full syntax highlighting:
    let python_highlight_all=1
    syntax on
    
    " Keep indentation level from previous line:
    autocmd FileType python set autoindent
    
    " make backspaces more powerfull
    set backspace=indent,eol,start
    
    
    "Folding based on indentation:
    autocmd FileType python set foldmethod=indent
    "use space to open folds
    nnoremap <space> za 
    "----------Stop python PEP 8 stuff--------------
    
    "js stuff"
    autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
    

    如果对vimrc的意义感兴趣,建议前往Vim+IDE了解。
    (4) 在将上面信息粘贴好后,请按Esc后输入:

    :wq
    

    保存文件。

    (5) 再次进入vimrc:

    $ sudo vim /.vimrc
    

    此时可能会报错:


    EOF.png

    解决' py << EOF '错误的方法为安装依赖包:

    $ sudo apt-get install vim-nox-py2
    

    3.3 搭建IDE环境

    (1) 我们的操作对象依然是vimrc,需要在其中加入我们需要的插件信息。请再次进入vimrc:

    $ sudo vim /.vimrc
    

    (2)请按Esc后输入:

    :PluginInstall
    

    如图:


    plugin.png

    回车,等待插件安装完成后,显示:


    done.png
    (3) 请按Esc后输入:
    :q
    

    退出当前操作。


    t.png

    (4) 再请按Esc后输入:

    :q
    

    退出vimrc。

    3.4 测试

    (1) 我们当前目录下创建一个测试文件t.py,并编辑。

    $ touch ~/t.py
    $ vim ~/t.py
    

    (2) 进入文件后,下方会出现ycmd 服务关闭的消息(如下图),本异常是因代码自动补全插件YouCompleteMe尚未安装完毕,暂时不用管它,我们稍后处理。


    ycmd.png

    好像没什么变化,对吗?试着按F3,应该看到变化了吧,这就是目录显示列表。


    cg.png

    至此,我们就完成了vimrc的配置。

    3.5 YouCompleteMe安装

    (1) 接下来,我们将完成代码补全功能。在Terminal中输入:

    $ cd ~
    $ mkdir ycm_build
    $ cd ycm_build
    $ cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
    

    (2) 如果你还没有安装cmake,就会出现提示。


    cm.png

    没有安装,就请在Terminal中输入:

    $ sudo apt-get install cmake
    

    (3) 安装完成,再次尝试:

    $ cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
    

    可能会报错:


    cme.png

    解决方法,安装依赖包:

    $ sudo apt-get install python-dev
    

    再次尝试:

    $ cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
    

    安装成功。


    cmm.png

    (4) 安装其他依赖包:

    $ sudo apt install build-essential python3-dev
    

    (5) 安装YCM:

    $ cd ~/.vim/bundle/YouCompleteMe
    $ sudo python3 install.py --clang-completer
    

    安装完成。


    ycmm.png

    4 体验

    至此,我们就可以开始高效的工作了。可能,继续要学习的就是各个插件的使用方法了。


    ycmmm.png

    欢迎大家交流!

    5 参考

    (1) Vim+IDE

    (2) Vimrc

    (3) YouCompleteMe

    相关文章

      网友评论

          本文标题:Vim 下部署Python IDE

          本文链接:https://www.haomeiwen.com/subject/vjvncqtx.html