主要为大家介绍一下vim的安装、配置及python3开发环境配置,文中经验一部分取自网上,一部分为自己的经验。希望能帮助到有需要的朋友。

首先为大家介绍一下系统情况:

Ubuntu16.04

Python3.5

一、安装vim

如果系统中已安装了vim,需要检查一下vim是否满足需求:

版本大于7.3

支持Python

在shell下输入命令vim --version,会显示出版本号和支持的特性,你需要在里面检查一下有没有+python3字样,如果vim版本过低或是不支持python,你就需要重新安装vim了。

vimversion.png

(一)卸载vim

在shell中输入以下命令:

sudo apt remove vim

(二)安装vim

不要使用以下命令安装vim:

sudo apt install vim

使用此命令安装的vim缺少对于Python的支持,很多Python编写的插件都无法使用,此前我就在这里被卡死了。所以你需要使用源码编译来安装vim,或者你也可以和我一样使用以下命令来安装:

sudo apt install vim-nox

二、安装Vundle插件管理器

Vundle是vim下使用最为广泛的插件管理器,下面就为大家介绍一下如何安装Vundle。

首先在Shell命令行中运行以下命令:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

该命令将把Vundle插件管理器下载到~/.vim/bundle/文件夹下,此后就需要使用配置.vimrc文件来安装插件。

首先要在你的主目录下新建一个名为.vimrc的vim配置文件。在shell中运行以下命令:

cd ~

touch .vimrc

ls

这样.vimrc文件就新建好了,此时打开.vimrc文件里面是空的。

然后将下面的Vundle配置添加到.vimrc文件的顶部:

set nocompatible " required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required

上面的空白处是用来添加另外插件的。配置完毕后可使用以下方法来安装:

运行vim后在normal模式下运行:PluginInstall命令

三、安装YouCompleteMe插件

YouCompleteMe(YCM)是一个功能非常强大的代码补全工具,可说是python开发的最佳搭档。

在安装YCM前,还需要先安装一些必须的软件:

sudo apt install python-dev python3-dev cmake

接着在~/.vimrc上文的空白处添加YCM配置:

Plugin 'Valloric/YouCompleteMe'

然后运行vim在normal模式下运行:PluginInstall,系统即会将YCM安装到~/.vim/bundle/目录下。

这里需要特别提醒大家的是YCM的体积比较大,等待的时间会比较长,有时会出错退出安装,这时在运行vim时,在窗口下部会出现红色的YouCompleteMe unavailable: No module named 'future'的提示。这是由于YCM没有下载完毕所造成的,这时可以换用Git来继续安装YCM:

在Shell下输入cd ~/.vim/bundle/YouCompleteMe进入YCM目录,然后输入

git submodule update --init --recursive命令,如下载过程中又出现中断出错,就继续运行此命令。

在克隆完成之后就需要进行安装:

如需要C语言家族支持就在终端里输入以下命令:

./install.py --clang-completer

如不需要C语言家族支持的话直接输入以下命令:

./install.py

如需C#语言支持的话可在运行./install.py命令时添加--cs-completer参数。

如需Go语言支持的话可在运行./install.py命令时添加--go-completer参数。

如需Java语言支持的话可在运行./install.py命令时添加--java-completer参数。

我们也可以使用简单一点的方法,直接添加--all参数来添加全语言支持。

./install.py --all

(注:最新更新了ubuntu18.04系统后发现YCM无法工作了,究其原因应该是由于ubuntu18取消了python2的默认安装支持发生的。解决办法很简单:python3 install.py --all。即可让YCM恢复工作了。)

上述命令运行时根据你的机器环境可能会提示你先执行一个Git命令克隆一些必须的库,按照提示运行就可以了。克隆完成之后再执行./install.py。

运行完毕后可在.vimrc文件中添加以下配置来让完成补全之后preview窗口自动消失:

let g:SimpyIFold_docstring_preview=1

复制.ycm_extra_conf.py文件至~/.vim目录下

cp ~/.vim/bundle/YoucompleteMe/third_parth/ycmd/examples/.ycm_extra_conf.py ~/.vim/

在.vimrc中添加YCM配置,打开.vimrc文件,在文件最后加入:

let g:ycm_server_python_interpreter='/usr/bin/python3'

let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

此处要填写你自己机器上的python解释器的版本位置。

以下配置你可以根据自己需求进行配置:

set completeopt-=preview

补全内容不以分割子窗口形式出现,只显示补全列表

let g:ycm_autoclose_preview_window_after_completion=1

完成操作后自动补全窗口不消失

四、安装NERDTree插件

使用NERDTree插件可以在Vim窗口中显示一个文件树。

~/.vimrc文件空白处添加

Plugin 'scrooloose/nerdtree'

运行Vim在normal模式下运行:PluginInstall

打开.vimrc配置文件在最后加上一句let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree,这样会使NERDTree在显示时隐藏.pyc文件。

五、配置vim环境

Vim下的插件非常之多,在这里就简要给大家介绍了以上两个,你可以上网去搜索更多你感兴趣的插件,安装完插件后我们就要来对Vim进行配置,使其更符合我们的工作习惯。对Vim进行配置是通过.vimrc文件进行的。下面贴出的是我使用的vim配置文件,有需要的朋友可以看一看。

"显示相关

"set shortmess=atI "不显示帮助乌干达的提示
colorscheme delek "设置配色方案
set showcmd "输入的命令显示出来
syntax on "语法高亮
set tabstop=4 "Tab键的宽度设为4
set softtabstop=4
set shiftwidth=4 "统一缩进为4
set autoindent "开启自动缩进,保持缩进值与上一行相等
autocmd InsertLeave * se nocul "用浅色高亮当前行
autocmd InsertEnter * se cul "用浅色高亮当前行
set ruler "显示当前光标行列位置
set mouse=a "支持鼠标
set laststatus=2 "显示状态栏(默认值为1,无法显示状态栏)
if has('gui_running')
set t_Co=256
endif
set guifont=Mono
set autoread "当文件在外部修改时,vim自动更新载入
set ignorecase "搜索时忽略大小写
set foldmethod=syntax
set nofoldenable "此两行为折叠代码
"自定义键映射
"实现CTRL-w保存操作
nnoremap :w
imap :wi
"映射以F5打开NERDTree
nnoremap :NERDTree
"映射自动补全括号
inoremap ( ()i
inoremap [ []i
inoremap { {}i
inoremap " ""i
inoremap ' ''i
set encoding=utf-8
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936,big-5
set enc=utf-8
let &termencoding=&encoding
set nu
set nocompatible " required,关闭vi兼容模式
filetype off " required
set list listchars=tab:>-,trail:-,eol:$ "设定tab键显示为>-,每行行尾显示$
set report=0
"python运行配置
map :w:!python3 %:q "按F6键进行python调试
au BufNewFile,BufRead *.py "设置py文件支持PEP8风格
\ set tabstop=4r
\ set softtabstop=4
\ set shiftwidth=4
\ set textwidth=79
\ set expandtab
\ set autoindent
\ set fileformat=unix
"auto add pyhton header --start 自动添加py文件头
autocmd BufNewFile *.py 0r ~/.vim/vim_template/vim_python_header
autocmd BufNewFile *.py ks|call FileName()|'s
autocmd BufNewFile *.py ks|call CreatedTime()|'s
fun FileName()
if line("$") > 10
let l = 10 "这里是字母L
else
let l =line("$")
endif
exe "1,".l."g/File Name:.*/s/File Name:.*/File Name:".expand("%")
"最前面是数字1,这里的File Name:和模板中一致
endfun
fun CreatedTime()
if line("$") > 10
let l=10
else
let l=line("$")
endif
exe "1,".l."g/Created Time:.*/s/Created Time:.*/Created Time:".strftime("%Y-%m-%d %T")
"这里Create Time:要和模板中一致
endfun
"auto add python header --end
"vundle配置
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
Plugin 'Valloric/YouCompleteMe'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'scrooloose/nerdtree'
Bundle 'davidhalter/jedi-vim'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
let g:ycm_server_python_interpreter='/usr/bin/python3'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree
let g:ycm_autoclose_preview_window_after_completion=1

在这个配置文件中,我主要设置了以下功能:

设置了vim使用的配色方案,colorscheme delek,这里我使用的是delek配色方案,大家也可以设置自己喜欢的配色方案,vim本身就自带有多套的配色方案。在Shell中输入vim命令,在normal模式下,normal模式就是你刚进入vim时的那个状态,输入:colorscheme 就可以在切换使用的配色方案,但这种方法对于配色方案的修改只是一次性的,需要永久更换配色方案的话,就请记下配色方案的名字,将.vimrc中的配色方案名称更改就可以了。如果对于自带配色方案不满意的话,也可以自行上网下载一些大神配置好配色方案。将下载好的配色方案复制到/usr/share/vim/vim74/colors/中,在你的机器上文件夹的名字可能不是vim74,你可以进入cd /usr/share/vim/文件夹中看看自己的文件夹名,拷贝进去后你的配色方案就可使用了。如果你想配置自己的配色方案,请自行百度。

设置了显示行号set nu,CTRL-w保存文件,各类括号和引号的自动补全。

设置按F5打开NERDTree插件nnoremap :NERDTree,你也可以设置自己的快捷键。

设置按F6自动运行编写的python程序。map :w:!python3 %:q,此处也可自行设置。

设置了自动添加python文件头。效果如下:

vim new.py
vimnewpy.png

模板存放在~/.vim/vim_template/路径下,模板名为`vim_python_header' ,具体内容如下,可自行创建:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#File Name:
#Created Time:

配置了python代码缩进

au BufNewFile,BufRead *.py "设置py文件支持PEP8风格
\ set tabstop=4r
\ set softtabstop=4
\ set shiftwidth=4
\ set textwidth=79
\ set expandtab
\ set autoindent
\ set fileformat=unix

设置安装vundle、YouCompleteMe、nerdtree插件

这里只是简要介绍一点Vim的配置,想要学习更多的Vim的功能请大家自行百度。Vim Tutor是Vim自带的教学程序,只需在Shell下输入vimtutor即可进行学习。