适用于python
如图 我根据github上大佬的配置作了一些改变 增加了自动配对括号等插件
插件管理器是vundle 自动补全是ncm2 (youcompleteme不太好使 你想用就把ncm2相关的都注释了 在把youcompleteme的相关取消注释
确保装了flake8 不然格式化代码用不了
f5 运行py文件
右shift " 开关目录树 配置里设置了目录树跟随文件跳转
. 或者 gc 注释整行 "毕竟和c不一样 没有;
f3 格式化代码 "配置文件里我开了保存文件后自动格式化
gf 跳转到文件中 比如1.txt
ctrl ] ctrl t 跳转ctags定义 返回原文件 " 先在源代码目录 ctags -R
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
" "
" __ _ _ _ __ ___ _ __ ___ "
" / / | '_ ` _ | '__/ __| "
" V /| | | | | | | | | (__ "
" _/ |_|_| |_| |_|_| ___| "
" "
" "
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
let $vimhome=fnamemodify(resolve(expand("~/.vimrc")), ':p:h')
let $vundle=$vimhome."/bundle/Vundle.vim"
" Be iMproved
set nocompatible
"=====================================================
"" Vundle settings
"=====================================================
filetype off
set rtp+=$vundle
call vundle#begin()
Plugin 'VundleVim/Vundle.vim' " let Vundle manage Vundle, required
"-------------------=== Code/Project navigation ===-------------
Plugin 'scrooloose/nerdtree' " 目录树插件
Plugin 'majutsushi/tagbar' " 显示类,变量之类的标签插件
Plugin 'kien/ctrlp.vim' " 模糊搜索文件 ctrl p
"-------------------=== Other ===-------------------------------
Plugin 'bling/vim-airline' " 底部状态增强/美化插件
Plugin 'vim-airline/vim-airline-themes' " 上面插件的主题
Plugin 'Lokaltog/powerline' " 状态行插件
Plugin 'fisadev/FixedTaskList.vim' " 任务列表插件 处理标签
Plugin 'rosenfeld/conque-term' " Consoles as buffers
Plugin 'tpope/vim-surround' " 删除,修改,插入成对符号
Plugin 'flazz/vim-colorschemes' " Colorschemes
"-------------------=== Snippets support ===--------------------
Plugin 'garbas/vim-snipmate' " 补全代码
Plugin 'MarcWeber/vim-addon-mw-utils' " dependencies #1 按函数解释文件并自动缓存文件
Plugin 'tomtom/tlib_vim' " dependencies #2
Plugin 'honza/vim-snippets' " snippets repo
Plugin 'jiangmiao/auto-pairs' "自动补全括号,引号等
Plugin 'Chiel92/vim-autoformat' "格式化代码 使用f3
"-------------------=== Languages support ===-------------------
Plugin 'tpope/vim-commentary' " 注释插件 gc . 为快捷键
Plugin 'mitsuhiko/vim-sparkup' " 压缩 HTML 格式的解析器
Plugin 'Rykka/riv.vim' " Riv 是一个 vim 插件,用于使用 reStructuredText_ 做笔记。
" Plugin 'Valloric/YouCompleteMe' " Autocomplete plugin
Plugin 'ncm2/ncm2'
Plugin 'ncm2/ncm2-path'
Plugin 'ncm2/ncm2-bufword' " 代码补全插件
Plugin 'ncm2/ncm2-jedi'
Plugin 'ncm2/ncm2-vim'
Plugin 'roxma/nvim-yarp'
"-------------------=== Python ===-----------------------------
Plugin 'klen/python-mode' " Python mode (docs, refactor, lints...) python模式 等待我探索
Plugin 'scrooloose/syntastic' " 错误检查
call vundle#end() " required
filetype on
filetype plugin on
filetype plugin indent on
"=====================================================
"" General settings
"=====================================================
syntax enable " syntax highlight
set t_Co=256 " set 256 colors
colorscheme wombat256mod " set color scheme
set number " show line numbers
set ruler
set ttyfast " terminal acceleration
set tabstop=4 " 4 whitespaces for tabs visual presentation
set shiftwidth=4 " shift lines by 4 spaces
set smarttab " set tabs for a shifttabs logic
set expandtab " expand tabs into spaces
set autoindent " indent when moving to the next line while writing code
set cursorline " shows line under the cursor's line
set showmatch " shows matching part of bracket pairs (), [], {}
set enc=utf-8 " utf-8 by default
set nobackup " no backup files
set nowritebackup " only in case you don't want a backup file while editing
set noswapfile " no swap files
set backspace=indent,eol,start " backspace removes all (indents, EOLs, start) What is start?
set scrolloff=10 " let 10 lines before/after cursor during scroll
set clipboard=unnamed " use system clipboard
set exrc " enable usage of additional .vimrc files from working directory
set secure " prohibit .vimrc files to execute shell, create files, etc...
" Additional mappings for Esc (useful for MacBook with touch bar)
inoremap jj
inoremap jk
"=====================================================
"" Tabs / Buffers settings
"=====================================================
tab sball
set switchbuf=useopen
set laststatus=2
nmap :bprev
nmap :bnext
nmap q :SyntasticCheck # :bp bd #
"" Search settings
"=====================================================
set incsearch " incremental search
set hlsearch " highlight search results
"=====================================================
"" AirLine settings
"=====================================================
let g:airline_theme='badwolf'
let g:airline#extensions#tabline#enabled=1
let g:airline#extensions#tabline#formatter='unique_tail'
let g:airline_powerline_fonts=1
"=====================================================
"" TagBar settings
"=====================================================
let g:tagbar_autofocus=0
let g:tagbar_width=42
autocmd BufEnter *.py :call tagbar#autoopen(0)
"=====================================================
"" NERDTree settings
"=====================================================
let NERDTreeIgnore=['.pyc$', '.pyo$', '__pycache__$'] " Ignore files in NERDTree
let NERDTreeWinSize=40
autocmd VimEnter * if !argc() | NERDTree | endif " Load NERDTree only if vim is run without arguments
nmap " :NERDTreeToggle
" 如果 NERDTree 是唯一选项卡中剩余的唯一窗口,则退出 Vim。
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
" nerdtree跟随打开的文件自动跳转目录
" Check if NERDTree is open or active
function! IsNERDTreeOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
" Call NERDTreeFind iff NERDTree is active, current window contains a modifiable
" file, and we're not in vimdiff
function! SyncTree()
if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff
NERDTreeFind
wincmd p
endif
endfunction
" Highlight currently open buffer in NERDTree
autocmd BufEnter * call SyncTree()
function! ToggleNerdTree()
set eventignore=BufEnter
NERDTreeToggle
set eventignore=
endfunction
nmap :call ToggleNerdTree()
"=====================================================
"" SnipMate settings
"=====================================================
let g:snippets_dir='~/.vim/vim-snippets/snippets'
let g:snipMate = {'snippet_version' : 1}
"=====================================================
"" Riv.vim settings
"=====================================================
let g:riv_disable_folding=1
"=====================================================
"" Python settings
"=====================================================
" python executables for different plugins
let g:pymode_python='python3'
let g:syntastic_python_python_exec='python3'
" rope
let g:pymode_rope=0
let g:pymode_rope_completion=0
let g:pymode_rope_complete_on_dot=0
let g:pymode_rope_auto_project=0
let g:pymode_rope_enable_autoimport=0
let g:pymode_rope_autoimport_generate=0
let g:pymode_rope_guess_project=0
" documentation
let g:pymode_doc=0
let g:pymode_doc_bind='K'
" lints
let g:pymode_lint=0
" virtualenv
let g:pymode_virtualenv=1
" breakpoints
let g:pymode_breakpoint=1
let g:pymode_breakpoint_key='b'
" syntax highlight
let g:pymode_syntax=1
let g:pymode_syntax_slow_sync=1
let g:pymode_syntax_all=1
let g:pymode_syntax_print_as_function=g:pymode_syntax_all
let g:pymode_syntax_highlight_async_await=g:pymode_syntax_all
let g:pymode_syntax_highlight_equal_operator=g:pymode_syntax_all
let g:pymode_syntax_highlight_stars_operator=g:pymode_syntax_all
let g:pymode_syntax_highlight_self=g:pymode_syntax_all
let g:pymode_syntax_indent_errors=g:pymode_syntax_all
let g:pymode_syntax_string_formatting=g:pymode_syntax_all
let g:pymode_syntax_space_errors=g:pymode_syntax_all
let g:pymode_syntax_string_format=g:pymode_syntax_all
let g:pymode_syntax_string_templates=g:pymode_syntax_all
let g:pymode_syntax_doctests=g:pymode_syntax_all
let g:pymode_syntax_builtin_objs=g:pymode_syntax_all
let g:pymode_syntax_builtin_types=g:pymode_syntax_all
let g:pymode_syntax_highlight_exceptions=g:pymode_syntax_all
let g:pymode_syntax_docstrings=g:pymode_syntax_all
" highlight 'long' lines (>= 80 symbols) in python files
augroup vimrc_autocmds
autocmd!
autocmd FileType python,rst,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black
autocmd FileType python,rst,c,cpp match Excess /%81v.*/
autocmd FileType python,rst,c,cpp set nowrap
autocmd FileType python,rst,c,cpp set colorcolumn=80
augroup END
" code folding
let g:pymode_folding=0
" pep8 indents
let g:pymode_indent=1
" code running
let g:pymode_run=1
let g:pymode_run_bind=''
" syntastic
let g:syntastic_always_populate_loc_list=1
let g:syntastic_auto_loc_list=1
let g:syntastic_enable_signs=1
let g:syntastic_check_on_wq=0
let g:syntastic_aggregate_errors=1
let g:syntastic_loc_list_height=5
let g:syntastic_error_symbol='X'
let g:syntastic_style_error_symbol='X'
let g:syntastic_warning_symbol='x'
let g:syntastic_style_warning_symbol='x'
let g:syntastic_python_checkers=['flake8', 'pydocstyle', 'python3']
" YouCompleteMe
"set completeopt-=preview
"let g:ycm_global_ycm_extra_conf='~/.vim/ycm_extra_conf.py'
"let g:ycm_/confirm/i_extra_conf=0
"nmap g :YcmCompleter GoTo
"nmap d :YcmCompleter GoToDefinition
" ncm2
autocmd BufEnter * call ncm2#enable_for_buffer()
" 补全模式,具体详情请看下文
set completeopt=menuone,noinsert,preview
set shortmess+=c
inoremap
" 延迟弹窗,这样提示更加流畅
let ncm2#popup_delay = 5
"输入几个字母开始提醒:[[最小优先级,最小长度]]
"如果是输入的是[[1,3],[7,2]],那么优先级在1-6之间,会在输入3个字符弹出,如果大于等于7,则2个字符弹出----优先级概念请参考文档中 ncm2-priority
let ncm2#complete_length = [[1, 1]]
"模糊匹配模式,详情请输入:help ncm2查看相关文档
let g:ncm2#matcher = 'substrfuzzy'
"使用tab键向下选择弹框菜单
inoremap pumvisible() ? "" : ""
"使用shift+tab键向上选择弹窗菜单,这里不设置因为笔记本比较难操作.如果向下太多我通常习惯使用Backspace键再重新操作一遍
"inoremap pumvisible() ? "" : ""
"autoformat
"F3自动格式化代码
noremap :Autoformat
let g:autoformat_verbosemode=1
"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
" 搜索时大小写不敏感
set ignorecase
" vim 自身命令行模式智能补全
set wildmenu



