Gvim打造python编辑器,附自己的配置文件

一. 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

三. 效果图

 

posted @ 2019-12-05 10:11  屁桃  阅读(1338)  评论(0编辑  收藏  举报