vim配置python相关插件

以下所有配置均在ubuntu16.04下安装完成:

配置vim插件管理工具

常用的vim插件管理工具有两个,一个是vim-pathogen另一个是Vundle.vim.

配置vim-pathogen

对比了一下两个工具,这里我选择的是vim-pathogen,其配置过程简单描述如下,详细信息直接参考官网就可以了:

  • 首先在~/.vim下创建两个文件夹,一个是autoload,另一个是bundle,以后所有的插件应用都安装在bundle中。然后下载pathogen到autoload下面。

    $ mkdir -p ~/.vim/autoload ~/.vim/bundle && \
    $ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
    
  • 配置.vimrc,在.vimrc添加如下代码:

    $ execute pathogen#infect()
    $ syntax on
    $ filetype plugin indent on
    
  • 基本配置完上述内容就可以使用了,详情请参考文档。

配置vimogen

vimogen结合上面的pathogen使得安装插件更加容易,只要在一个固定的文件.vimogen_repos中添加上插件的github地址,然后就可以使用命令自动安装。在安装好pathogen之后,添加如下代码即可:

  • 安装

    $ git clone https://github.com/rkulla/vimogen
    $ chmod u+x vimogen
    $ cp vimogen to your $PATH
    
  • 使用
    首先将想要安装软件的地址放在~/.vimogen_repos里面(见我的github),像下面这样:

    https://github.com/Valloric/YouCompleteMe
    https://github.com/jeaye/color_coded
    https://github.com/rdnetto/YCM-Generator
    https://github.com/scrooloose/nerdtree
    https://github.com/Shougo/neocomplete.vim
    

    然后执行vimogen

    $ vimogen
    

    安装界面如下:

    1) INSTALL
    2) UNINSTALL
    3) UPDATE
    4) EXIT
    Enter the number of the menu option to perform:
    

    直接按1就可以了,程序会自动安装上面链接里面的插件,如果已经安装,则会跳过。
    如果按2,则是卸载已经安装的插件,直接选择要卸载的插件对应的编号即可。

配置常用插件

1. YouCompleteMe

YouCompleteMe基本上支持各种语言的自动补全,其安装过程需要编译一下,因此这里介绍一下安装过程,后面的几个插件因为直接使用vimogen装上就可以直接使用,因此不在过多介绍后面几类插件。YCM安装过程如下:

  • 下载
    直接使用vimogen一节介绍的方法讲YCM下载到~/.vim/bundle中,然后进入到~/.vim/bundle/YouCompleteMe/路径下。

  • 安装
    按照自己的需求选择编译命令,这里我因为常用的是python,但是也把c-family语言也选上了,因此执行下面命令进行编译安装:

    cd ~/.vim/bundle/YouCompleteMe
    python3 install.py --clang-completer
    # 注意:如果编译开始时出错一般是缺少各种工具,按照提示安装就可以了。
    
  • 配置
    这里根据自己的需求配置一些常用参数在.vimrc中。
    我配置的如下:

    "==================YCM====================
    let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'
    nnoremap  :YcmCompleter GoToDefinitionElseDeclaration
    

    配置的第二行配置了一个快捷键用来使用F12实现go to definition的功能。

    自动补全的效果如下:


    vim配置python相关插件_第1张图片
    ycm.png

    vim配置python相关插件_第2张图片
    ycm2.png

常见问题:

  1. 在有一次配置服务器上的vim编辑器时候,遇到下面的问题:

YouCompleteMe unavailable no module named builtins.

查资料发现:这是因为网络很慢,导致要依赖的文件还没有下载全,所以可以先把文件下载了。

解决办法:

$ cd /home/yourusername/.vim/bundle/YouCompleteMe
$ git submodule update --init --recursive

2. neocomplete.vim

  • neocomplete.vim实现路径的自动补全功能,效果如下:
    vim配置python相关插件_第3张图片
    neocomplete.png

3. nerdtree

  • nerdtree实现在左侧目录树功能,其效果如下:
    vim配置python相关插件_第4张图片
    tree.png
  • 使用方法:
    1. m显示出菜单,然后根据菜单提示可以进行更多操作,比如这里我想新建一个文件(夹),直接按a, 然后输入想新建的文件(夹)即可。
      vim配置python相关插件_第5张图片
      nerdtree

4. vim-airline

主要负责状态栏显示

5. vim-gitgutter

主要负责git状态显示

6. vim-signify

和vim-gitgutter结合使用

7. vim-fugitive

更强大的git管理

8. auto-pairs

括号,引号等自动补全,很实用

9. indentLine

显示缩进

10. vim-colorschemes

代码配色方案

最终效果

  • 通过配置上面插件,我经常使用的界面大概长成下面的样子。
    vim配置python相关插件_第6张图片
    最终效果

.vimrc

最后把常用的.vimrc文件配置贴出来用于给读者参考. 感兴趣的读者可以去我的github上下载。

"===============pathogen=================                                                                                                                                                                           
execute pathogen#infect()                                                                                                                                                                                           
syntax on                                                                                                                                                                                                           
filetype plugin indent on                                                                                                                                                                                           
                                                                                                                                                                                                                    
""===============基本设置=================                                                                                                                                                                          
set number              "显示行号                                                                                                                                                                                   
set ruler               "打开状态栏标尺                                                                                                                                                                             
syntax on               "自动语法高亮                                                                                                                                                                               
set shiftwidth=4        "默认缩进4个空格                                                                                                                                                                            
set softtabstop=4       "使用tab时 tab空格数                                                                                                                                                                        
set tabstop=4           "tab 代表4个空格                                                                                                                                                                            
set expandtab           "使用空格替换tab                                                                                                                                                                            
set showmatch           "高亮显示匹配的括号                                                                                                                                                                         
set hlsearch            "高亮显示搜索结果                                                                                                                                                                           
set t_Co=256            "颜色                                                                                                                                                                                       
set foldmethod=indent   "代码折叠                                                                                                                                                                                   
set foldlevel=99                                                                                                                                                                                                    
nnoremap  za                                                                                                                                                                                                 
                                                                                                                                                                                                                    
"===============nerdtree=================                                                                                                                                                                           
autocmd StdinReadPre * let s:std_in=1                                                                                                                                                                               
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif "当没指定文件时nerdtree自动打开                                              
map  :NERDTreeToggle                                                                                                                                                                                       
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif "当只剩下nerdtree时候vim自动退出                                                                              
                                                                                                                                                                                                                    
"==================YCM====================                                                                                                                                                                          
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'                                                                                                                                  
nnoremap  :YcmCompleter GoToDefinitionElseDeclaration                                                                                                                                                      
                                                                                                                                                                                                                    
"================ultisnips================                                                                                                                                                                          
""Trigger configuration. Do not use  if you use                                                                                                                                                                
"https://github.com/Valloric/YouCompleteMe.                                                                                                                                                                         
let g:UltiSnipsExpandTrigger=""                                                                                                                                                                                
let g:UltiSnipsJumpForwardTrigger=""                                                                                                                                                                           
let g:UltiSnipsJumpBackwardTrigger=""                                                                                                                                                                          
                                                                                                                                                                                                                    
"================airlinae=================                                                                                                                                                                          
if !exists('g:airline_symbols')                                                                                                                                                                                     
  let g:airline_symbols = {}                                                                                                                                                                                        
endif                                                                                                                                                                                                               
let g:airline_left_sep = '»'                                                                                                                                                                                        
let g:airline_right_sep = '«'                                                                                                                                                                                       
let g:airline_symbols.crypt = ''                                                                                                                                                                                  
let g:airline_symbols.linenr = '☰'                                                                                                                                                                                  
let g:airline_symbols.maxlinenr = '㏑'                                                                                                                                                                              
let g:airline_symbols.branch = '⎇'                                                                                                                                                                                  
let g:airline_symbols.paste = 'ρ'                                                                                                                                                                                   
let g:airline_symbols.spell = 'Ꞩ'                                                                                                                                                                                   
let g:airline_symbols.notexists = 'Ɇ'                                                                                                                                                                               
let g:airline_symbols.whitespace = 'Ξ'                                                                                                                                                                              
                                                                                                                                                                                                                    
"================colorscheme==============                                                                                                                                                                          
colorscheme molokai  
# .vimogen_repos
https://github.com/Valloric/YouCompleteMe                                                            
https://github.com/SirVer/ultisnips.git                                                              
https://github.com/honza/vim-snippets.git                                                            
https://github.com/Shougo/neocomplete.vim                                                            
https://github.com/jiangmiao/auto-pairs                                                              
https://github.com/scrooloose/nerdtree                                                               
                                                                                                                                                                                                                   
https://github.com/airblade/vim-gitgutter                                                            
https://github.com/mhinz/vim-signify                                                                 
https://github.com/tpope/vim-fugitive                                                                
                                                                                                     
https://github.com/vim-airline/vim-airline                                                           
https://github.com/vim-airline/vim-airline-themes                                                    
https://github.com/Yggdroot/indentLine                                                               
https://github.com/flazz/vim-colorschemes       

参考资料

  • Building-Vim-from-source
  • [ubuntu]自己编译安装vim 8.0的方法
  • github: vim-pathogen
  • github: Vundle.vim
  • YouCompleteMe A code-completion engine for Vim
  • 跟我一起学习VIM - vim插件合集
  • vim查找/替换字符串
  • Vim技巧之分割窗口
  • vim 多窗口编辑
  • VIM选择文本块/复制/粘贴
  • ultisnips
  • vimtex
  • Auto-call auto-completion v2
  • anyone_else_abusing_ultisnips?
  • vim-airline
  • dotfiles
  • vim-latex-live-preview
  • fugitive-vim-working-with-the-git-index
  • vimcasts.org
  • vim的powerline插件没有颜色
  • Creating a new file or directory in Vim using NERDTree
  • Using Spell Checking in Vim
  • Vim 实用插件推荐(2017)
  • Tmux使用手册

你可能感兴趣的:(vim配置python相关插件)