一、源码编译安装vim8.0

配置epel源

yum install epel-release

安装python3,以及vim8.0编译环境

yum install -y gcc python34 python34-devel ncurses-devel wget libzip bzip2 git

下载vim8.0

编译安装并支持python3

make clean

./configure --prefix=/opt/vim8 --enable-fail-if-missing --enable-python3interp --enable-multibyte --enable-fontset --with-features=huge

make

make install

查看安装的vim信息

/opt/vim8/bin/vim --version

VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Mar 15 2017 23:40:14)

包含补丁: 1-69

编译者 root@erick

巨型版本 无图形界面。 可使用(+)与不可使用(-)的功能:

+acl +file_in_path +mouse_sgr +tag_old_static

+arabic +find_in_path -mouse_sysmouse -tag_any_white

+autocmd +float +mouse_urxvt -tcl

-balloon_eval +folding +mouse_xterm +termguicolors

-browse -footer +multi_byte +terminfo

++builtin_terms +fork() +multi_lang +termresponse

+byte_offset +gettext -mzscheme +textobjects

+channel -hangul_input +netbeans_intg +timers

+cindent +iconv +num64 +title

-clientserver +insert_expand +packages -toolbar

-clipboard +job +path_extra +user_commands

+cmdline_compl +jumplist -perl +vertsplit

+cmdline_hist +keymap +persistent_undo +virtualedit

+cmdline_info +lambda +postscript +visual

+comments +langmap +printer +visualextra

+conceal +libcall +profile +viminfo

+cryptv +linebreak -python +vreplace

+cscope +lispindent +python3 +wildignore

+cursorbind +listcmds +quickfix +wildmenu

+cursorshape +localmap +reltime +windows

+dialog_con -lua +rightleft +writebackup

+diff +menu -ruby -X11

+digraphs +mksession +scrollbind -xfontset

-dnd +modify_fname +signs -xim

-ebcdic +mouse +smartindent -xpm

+emacs_tags -mouseshape +startuptime -xsmp

+eval +mouse_dec +statusline -xterm_clipboard

+ex_extra -mouse_gpm -sun_workshop -xterm_save

+extra_search -mouse_jsbterm +syntax

+farsi +mouse_netterm +tag_binary

系统 vimrc 文件: "$VIM/vimrc"

用户 vimrc 文件: "$HOME/.vimrc"

第二用户 vimrc 文件: "~/.vim/vimrc"

用户 exrc 文件: "$HOME/.exrc"

defaults file: "$VIMRUNTIME/defaults.vim"

$VIM 预设值: "/opt/vim8/share/vim"

编译方式: gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1

链接方式: gcc -L/usr/local/lib -Wl,--as-needed -o vim -lm -ltinfo -lnsl -ldl -L/usr/lib64/python3.4/config-3.4m -lpython3.4m -lpthread -ldl -lutil -lm

设置vim8的配置文件

cp /opt/vim8/share/vim/vim80/vimrc_example.vim /opt/vim8/share/vim/vimrc

将vim8做软连接到/usr/bin下为vim8_py3,方便直接调用

ln -s /opt/vim8/bin/vim /usr/bin/vim8_py3

二、配置vim for python

创建目录并clone vundle源代码

mkdir /opt/vim8/share/vim/bundle

git clone https://github.com/gmarik/vundle.git /opt/vim8/share/vim/bundle/vundle.vim

编辑配置文件vimrc添加如下内容

vim /opt/vim8/share/vim/vimrc

"去除VI一致性,必须

set nocompatible

"必须

filetype off

"设置Vundle的运行路径

set rtp+=/opt/vim8/share/vim/bundle/Vundle.vim

"设置插件的安装路径,vundle插件起始标志

call vundle#begin('/opt/vim8/share/vim/bundle')

"让vundle管理插件版本

Plugin 'VundleVim/Vundle.vim'

"你的所有插件需要在下面这行之前

call vundle#end()

"加载vim自带和插件相应的语法和文件类型相关脚本

filetype plugin indent on

然后运行vim8_py3,在Normal模式下运行命令PluginList

vim8_py3

297802d16fb4

回车后一个新的窗口即Vundle,会列出你安装的所有插件

297802d16fb4

运行PluginInstall会安装列表中的插件

297802d16fb4

注:删除插件只需要在vimrc配置文件中注释掉插件,在vim中用PluginClean进行清理

下面会安装不同的包,你只需将它们添加到vimrc中,然后再vim运行PluginInstall,下面将介绍一些能用到的插件

nerdtree插件,nerdtree是一个在vim中新窗口显示的文件浏览器,在vimrc中添加如下内容

"添加nerdtree插件

Bundle 'scrooloose/nerdtree'

"设置按F2启动NerdTree

map :NERDTreeToggle

"隐藏目录树中的.pyc文件

let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree

可以先用PluginList查看下插件,再用PluginInstall安装

297802d16fb4

在normal模式下,按F2可以开启或者关闭树形结构,可以用鼠标点选文件打开,是不是很方便!

297802d16fb4

jedi-vim代码补全插件,拥有强大的提示功能

需要用pip安装jedi

yum install python34-pip

pip3 install jedi

在vimrc中添加如下内容,然后再vim中执行PluginInstall安装

"添加jedi-vim代码补全插件

Plugin 'davidhalter/jedi-vim'

效果如下图:

297802d16fb4

YouCompleteMe另一个十分强大的代码补全插件,我更喜欢这个,jedi-vim在我的vim中总是有点小瑕疵,用的不是很顺手。

"添加YouCompleteMe代码补全插件

Plugin 'Valloric/YouCompleteMe'

"youcompleteme 默认tab s-tab 和自动补全冲突

""let g:ycm_key_list_select_completion=['']

let g:ycm_key_list_select_completion = ['']

"let g:ycm_key_list_previous_completion=['']

let g:ycm_key_list_previous_completion = ['']

"关闭加载.ycm_extra_conf.py提示

let g:ycm_confirm_extra_conf=0

" 开启 YCM 基于标签引擎

let g:ycm_collect_identifiers_from_tags_files=1

" 从第2个键入字符就开始罗列匹配项

let g:ycm_min_num_of_chars_for_completion=2

" 禁止缓存匹配项,每次都重新生成匹配项

let g:ycm_cache_omnifunc=0

" 语法关键字补全

let g:ycm_seed_identifiers_with_syntax=1

"force recomile with syntastic

nnoremap :YcmForceCompileAndDiagnostics

"nnoremap lo :lopen "open locationlist

"nnoremap lc :lclose "close locationlist

inoremap

"在注释输入中也能补全

let g:ycm_complete_in_comments = 1

"在字符串输入中也能补全

let g:ycm_complete_in_strings = 1

"注释和字符串中的文字也会被收入补全

let g:ycm_collect_identifiers_from_comments_and_strings = 0

当YouCompleteMe在vim安装时间会有点长,需要耐心等待,安装完成后还需要进入到目录进行编译

cd /opt/vim8/share/vim/bundle/YouCompleteMe/

python3 install.py --clang-completer

编译结束后就可以使用了,如下图,和jedi-vim还是有些不一样的:

297802d16fb4

syntastic一款python语法检测插件

"python语法检测

Plugin 'scrooloose/syntastic'

"添加PEP8代码风格检查

Plugin 'nvie/vim-flake8'

配色方案

"配色方案

Plugin 'jnurmine/Zenburn'

Plugin 'altercation/vim-colors-solarized'

"设置主题颜色,以及设置快捷键F5

if has('gui_running')

set background=dark

colorscheme solarized

else

colorscheme zenburn

endif

call togglebg#map("")

代码折叠插件

"代码折叠插件

Plugin 'tmhedberg/SimpylFold'

"开启代码折叠

set foldmethod=indent

set foldlevel=99

"设置快捷键为空格

noremap za

"显示折叠代码的文档字符串

let g:SimpylFold_docstring_preview=1

自动缩进

"自动缩进

Plugin 'vim-scripts/indentpython.vim'

文件搜索

"在vim的normal模式下搜索文件

Plugin 'kien/ctrlp.vim'

后续还会有一些补充,附上vimrc配置文件内容

set nocompatible " required

filetype off " required

"设置Vundle的运行路径

set rtp+=/opt/vim8/share/vim/bundle/Vundle.vim

"设置插件的安装路径,vundle插件起始标志

call vundle#begin('/opt/vim8/share/vim/bundle')

"让vundle管理插件版本

Plugin 'VundleVim/Vundle.vim'

"添加nerdtree插件

Plugin 'scrooloose/nerdtree'

"使用tab键切换窗口与目录树

Plugin 'jistr/vim-nerdtree-tabs'

"添加jedi-vim代码补全插件

"Plugin 'davidhalter/jedi-vim'

Plugin 'Valloric/YouCompleteMe'

"python语法检测

Plugin 'scrooloose/syntastic'

"添加PEP8代码风格检查

Plugin 'nvie/vim-flake8'

"配色方案

Plugin 'jnurmine/Zenburn'

Plugin 'altercation/vim-colors-solarized'

"代码折叠插件

Plugin 'tmhedberg/SimpylFold'

"自动缩进

Plugin 'vim-scripts/indentpython.vim'

"在vim的normal模式下搜索文件

Plugin 'kien/ctrlp.vim'

"Powerline状态栏

Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}

"你的所有插件需要在下面这行之前

call vundle#end()

"设置分割窗口

set splitbelow

set splitright

"设置窗口移动快捷键

nnoremap

nnoremap

nnoremap

nnoremap

"设置按F2启动NerdTree

map :NERDTreeToggle

"youcompleteme 默认tab s-tab 和自动补全冲突

""let g:ycm_key_list_select_completion=['']

let g:ycm_key_list_select_completion = ['']

"let g:ycm_key_list_previous_completion=['']

let g:ycm_key_list_previous_completion = ['']

"关闭加载.ycm_extra_conf.py提示

let g:ycm_confirm_extra_conf=0

" 开启 YCM 基于标签引擎

let g:ycm_collect_identifiers_from_tags_files=1

" 从第2个键入字符就开始罗列匹配项

let g:ycm_min_num_of_chars_for_completion=2

" 禁止缓存匹配项,每次都重新生成匹配项

let g:ycm_cache_omnifunc=0

" 语法关键字补全

let g:ycm_seed_identifiers_with_syntax=1

"force recomile with syntastic

nnoremap :YcmForceCompileAndDiagnostics

"nnoremap lo :lopen "open locationlist

"nnoremap lc :lclose "close locationlist

inoremap

"在注释输入中也能补全

let g:ycm_complete_in_comments = 1

"在字符串输入中也能补全

let g:ycm_complete_in_strings = 1

"注释和字符串中的文字也会被收入补全

let g:ycm_collect_identifiers_from_comments_and_strings = 0

"隐藏目录树种的.pyc文件

let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree

"设置主题颜色,以及设置快捷键F5

if has('gui_running')

set background=dark

colorscheme solarized

else

colorscheme zenburn

endif

call togglebg#map("")

"开启代码折叠

set foldmethod=indent

set foldlevel=99

"设置快捷键为空格

noremap za

"显示折叠代码的文档字符串

let g:SimpylFold_docstring_preview=1

"python代码缩进PEP8风格

au BufNewFile,BufRead *.py,*.pyw set tabstop=4

au BufNewFile,BufRead *.py,*.pyw set softtabstop=4

au BufNewFile,BufRead *.py,*.pyw set shiftwidth=4

au BufNewFile,BufRead *.py,*.pyw set textwidth=79

au BufNewFile,BufRead *.py,*.pyw set expandtab

au BufNewFile,BufRead *.py,*.pyw set autoindent

au BufNewFile,BufRead *.py,*.pyw set fileformat=unix

"对其他文件类型设置au命令

au BufNewFile,BufRead *.js, *.html, *.css set tabstop=2

au BufNewFile,BufRead *.js, *.html, *.css set softtabstop=2

au BufNewFile,BufRead *.js, *.html, *.css set shiftwidth=2

"高亮显示行伟不必要的空白字符

highlight Whitespace ctermbg=red guibg=red

au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match Whitespace /\s\+$\ \+/

"设置行号显示

set nu

"设置utf-8编码

set encoding=utf-8

let python_highlight_all=1

syntax on

filetype plugin indent on

Logo

一站式 AI 云服务平台

更多推荐