zoukankan      html  css  js  c++  java
  • 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:GvimVimvim81plugs')
    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:GvimVimvim81ftplugincomplete-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

    三. 效果图

  • 相关阅读:
    关于C#静态构造函数的几点说明
    《JavaScript高级程序设计》读书笔记之一:几个与原始类型等价的引用类型的常用方法和属性
    Ajax 简介
    如何优化JavaScript脚本的性能
    摆脱混沌,建立个人能力体系——病症四起【from csdn】
    JMX理解与实例
    苹果电脑不为人所知的第三个创始人
    一些AS3中常用到的公式
    JavaScript 随笔
    解决IE6 JSONP无响应的问题。
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/11987417.html
Copyright © 2011-2022 走看看