一. Gvim简介
Gvim的G指的是GUI,也就是图形化界面。相当于在vim包了一层图形化界面,相比之下gvim拥有更丰富的颜色和字体,还有菜单和滚动条,以及更友好的鼠标操作等,除此之外和vim并无太大差异.这里就不再详细说下载和安装过程.
安装好gvim后,用它随便打开一个文件在命令模式下输入:version查看,注意python或python3前边应该是+,说明已经支持python环境,这里只说python3.6的配置.
二. _vimrc配置
set pythonthreedll=python36.dll "设置支持3.6,原gvim可能只支持python3.7
"隐藏菜单栏
set guioptions-=m
set guioptions-=T
map <silent> <F2> :if &guioptions =~# 'T' <Bar>
\set guioptions-=T <Bar>
\set guioptions-=m <bar>
\else <Bar>
\set guioptions+=T <Bar>
\set guioptions+=m <Bar>
\endif<CR> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 编码设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set langmenu=zh_CN.UTF-8
set helplang=cn
set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030 source $VIMRUNTIME/delmenu.vim "导入删除菜单脚本,删除乱码的菜单
source $VIMRUNTIME/menu.vim "导入正常的菜单脚本
language messages zh_CN.utf-8 "设置提示信息语言 syntax on "语法高亮 " 缓存设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set nobackup "设置不备份
set noswapfile "禁止生成临时文件
set autoread "文件在vim之外修改过,自动重新载入
set autowrite "设置自动保存
set confirm "在处理未保存或只读文件时,弹出确认 set number "设置行号
set relativenumber "行号
map <F5> :source $HOME/_vimrc<CR> " 配色方案
let g:molokai_original=1
let g:rehash256=1
colorscheme evening set guifont=DejaVu_Sans_Mono:h13:cANSI "设置字体和大小
noremap W :w<CR>
noremap Q :q<CR>
noremap Y 5h
noremap U 5j
noremap I 5k
noremap O 5l
inoremap <F8> <esc>
set tabstop=4
set wrap "设置自动换行
set linebreak "整词换行,与自动换行搭配使用
set showtabline=2 "设置显是显示标签栏
set autoread "设置当文件在外部被修改,自动更新该文件
set hlsearch "高亮显示查找结果
set incsearch "增量查找
exec "nohlsearch"
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] "显示文件名:总行数,总的字符数
set ruler "在编辑过程中,在右下角显示光标位置的状态行
set smartindent "智能对齐
set showmatch "设置匹配模式,相当于括号匹配
set cursorline "启用光标行
set scrolloff=5 "在光标接近底端或顶端时,自动下滚或上滚
set mouse=a "设置在任何模式下鼠标都可用
set ai! "设置自动缩进
set guicursor+=a:blinkon0 "设置光标不闪烁
set ignorecase "搜索大小写不敏感
set noic map <F4> :%!python -m json.tool<CR> "格式化json字符串
"代码折叠
set foldmethod=indent
set foldlevel=99
let g:SimpylFold_docstring_preview=1 "切换分屏
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H> "plugin插件配置
call plug#begin('E:\Gvim\Vim\vim81\plugs')
Plug 'tell-k/vim-autopep8'
Plug 'scrooloose/nerdtree'
Plug 'vim-scripts/indentpython.vim'
Plug 'tmhedberg/SimpylFold'
Plug 'rkulla/pydiction'
Plug 'Yggdroot/indentLine'
call plug#end() "配置文件树
"设置NerdTree 按F3打开或关闭NERDTree
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>
"打开vim时自动打开NERDTree
autocmd VimEnter * NERDTree
"关闭所有文本窗口时自动退出vim,否则需要两次退出才可
autocmd BufEnter * if 0 == len(filter(range(1, winnr('$')), 'empty(getbufvar(winbufnr(v:val), "&bt"))'))
let NERDTreeIgnore = ['\.pyc$'] " 过滤所有.pyc文件不显示
let NERDTreeMinimalUI = 1
let NERDTreeDirArrows = 1 "一键运行
map <F12> :call CompileRunGcc()<CR> func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec '!g++ % -o %<'
exec '!./%<'
elseif &filetype == 'cpp'
exec '!g++ % -o %<'
exec '!./%<'
elseif &filetype == 'python'
exec '!python %'
elseif &filetype == 'sh'
:!bash %
endif
endfunc "自动补全
filetype plugin on
let g:pydiction_location = 'E:\Gvim\Vim\vim81\ftplugin\complete-dict'
let g:pydiction_menu_height = 3 "PEP8
autocmd FileType python noremap <buffer> <C-\> :call Autopep8()<CR> set nocompatible "与vi不兼容
set backspace=indent,eol,start "缩进线
let g:indentLine_color_gui = '#A4E57E'
let g:indentLine_color_tty_light = 7
let g:indentLine_color_dark = 1 "ctags配置
map <F9> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F9> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags;
set autochdir "配置taglist
noremap pp :TlistToggle<CR> "格式化json
command! Json :execute '%!python -m json.tool'
\ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)).encode(\"utf-8\"), sys.stdin.read()))"'
\ | :set ft=javascript
\ | :1
三. 效果图