https://gitee.com/luoxian1011/files/raw/master/.vimrc
" . . . . . . . S@t.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. " . ..t%SXSS%:;t.X8S% . . . . . . . . . . . . . " . %St8;8:X;8:8:8%8;%%:@S: . . . . .... . . . . . . . . . . . . . . . .... " . 8: %.;t;S;%@88:X.8X8%;8S t@@% . %@@t .X88X . . . %@@@@@@@@@X: . . . . . " ..X.;X%8t8%8ttX.88;8.8%:;% ;8:SX%. SX.8S. St88: . . . . ..XS.@%SSS88S@:. X@@% . . . . . . ...... " . X;:;8SS888;8tt;8:8:8; t:t8S 8:Xt. :8888: .%888:. .SSSSSSSSSSS%: .S888t @@8X: .%.88 .SSt .:SS; .%SSSSSSSS%. " :t8 :;X8S;8.8S;8S.8.t8:%8XS.. S8.8:.S8;8; :@;@88 . S:88 X.88@88:@t..%S. .. X;8@: :%:;8. X%:X;. 8;.; %S8@XXSXSS8.. " .t88; X;8S8888;8S8t 8S88SSStt:. @.%8St;@8X . t .8S S:88:%888%;8t8:..S.S@%SSS8S88t .% @; X:.X. 88t :.t@t8@ ....... " 8; :888XSStS;88;88X%;;tt::;;8@ ..%X88:88Xt .S@.::. S@8% X8.@;S888X .%;88SSSS.SX.:. 8S88: @;88t. 8.S8 t;@8@88@88S.. " S. :tX: ;%8S8 : .::. %8t %S 8. @88t8 8t. . . .@8; 8888 @@%S;t8.8S .:SX8; .:.... . S8; ..8888:..8:8@: ;St@@888.@@.. " :8:;888888 .; . 8%8@ .8X.@8X . X%8@ .t@8S X88X:%888X .@8@8t .. . SX%X .X;;S@%tS8; ;..SttSXS8888S. " t.8XX;;8X% XX. . %8X8; . :tX8@t . t8X8: %@@S X8@@:t8tXt...:%t.. . X:8X X8@@88@888t. %88t888 888t. " . :8;S: . S@. t8;8:: . .;:;. . . .%@%: t%%; .%%;..: t. .; : . . . %;8. ;X;X%.:.: t ;t ;:: :t;.. " :%@t%8 88. . . :: . .. . . . . .. . .. . . . . ... . . . . .. " .. 8888 .. ... . . . . . . . .. . . . . . . .. . . . . . . .... " " Author: chxuan <787280310@qq.com> " Repository: https://github.com/chxuan/vimplus " Create Date: 2016-04-10 " License: MIT """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 通用设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let mapleader = " " " 定义<leader>键 set nocompatible " 设置不兼容原始vi模式 filetype on " 设置开启文件类型侦测 filetype plugin on " 设置加载对应文件类型的插件 set noeb " 关闭错误的提示 syntax enable " 开启语法高亮功能 syntax on " 自动语法高亮 set t_Co=256 " 开启256色支持 set cmdheight=2 " 设置命令行的高度 set showcmd " select模式下显示选中的行数 set ruler " 总是显示光标位置 set laststatus=2 " 总是显示状态栏 set number " 开启行号显示 set cursorline " 高亮显示当前行 set whichwrap+=<,>,h,l " 设置光标键跨行 set ttimeoutlen=0 " 设置<ESC>键响应时间 set virtualedit=block,onemore " 允许光标出现在最后一个字符的后面 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 代码缩进和排版 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set autoindent " 设置自动缩进 set cindent " 设置使用C/C++语言的自动缩进方式 set cinoptions=g0,:0,N-s,(0 " 设置C/C++语言的具体缩进方式 set smartindent " 智能的选择对其方式 filetype indent on " 自适应不同语言的智能缩进 set expandtab " 将制表符扩展为空格 set tabstop=4 " 设置编辑时制表符占用空格数 set shiftwidth=4 " 设置格式化时制表符占用空格数 set softtabstop=4 " 设置4个空格为制表符 set smarttab " 在行和段开始处使用制表符 set nowrap " 禁止折行 set backspace=2 " 使用回车键正常处理indent,eol,start等 set sidescroll=10 " 设置向右滚动字符数 set nofoldenable " 禁用折叠代码 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 代码补全 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set wildmenu " vim自身命名行模式智能补全 set completeopt-=preview " 补全时不显示窗口,只显示补全列表 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 搜索设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set hlsearch " 高亮显示搜索结果 set incsearch " 开启实时搜索功能 set ignorecase " 搜索时大小写不敏感 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 缓存设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nobackup " 设置不备份 set noswapfile " 禁止生成临时文件 set autoread " 文件在vim之外修改过,自动重新读入 set autowrite " 设置自动保存 set confirm " 在处理未保存或只读文件的时候,弹出确认 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 编码设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 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 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " gvim/macvim设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if has("gui_running") let system = system('uname -s') if system == "Darwin\n" set guifont=Droid\ Sans\ Mono\ Nerd\ Font\ Complete:h18 " 设置字体 else set guifont=DroidSansMono\ Nerd\ Font\ Regular\ 18 " 设置字体 endif set guioptions-=m " 隐藏菜单栏 set guioptions-=T " 隐藏工具栏 set guioptions-=L " 隐藏左侧滚动条 set guioptions-=r " 隐藏右侧滚动条 set guioptions-=b " 隐藏底部滚动条 set showtabline=0 " 隐藏Tab栏 set guicursor=n-v-c:ver5 " 设置光标为竖线 endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 按 空格 + w 保存的快捷键 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" nmap <Leader>w :w!<CR> vmap <Leader>w <C-C>:w!<CR> imap <Leader>w <Esc>:w!<CR> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " C,C++, Py, Sh 按F5编译运行 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" map <F5> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" if &filetype == 'c' exec "!g++ % -o %<" exec "! ./%<" elseif &filetype == 'cpp' exec "!g++ % -o %<" exec "! ./%<" elseif &filetype == 'java' exec "!javac %" exec "!java %<" elseif &filetype == 'python' exec "!python %" elseif &filetype == 'sh' :!sh % endif endfunc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 卸载默认插件UnPlug """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! s:deregister(repo) let repo = substitute(a:repo, '[\/]\+$', '', '') let name = fnamemodify(repo, ':t:s?\.git$??') call remove(g:plugs, name) endfunction command! -nargs=1 -bar UnPlug call s:deregister(<args>) """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 插件列表 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" call plug#begin('~/.vim/plugged') Plug 'chxuan/cpp-mode' Plug 'chxuan/vim-edit' Plug 'chxuan/change-colorscheme' Plug 'chxuan/prepare-code' Plug 'chxuan/vim-buffer' Plug 'chxuan/vimplus-startify' Plug 'preservim/tagbar' Plug 'Valloric/YouCompleteMe' Plug 'Yggdroot/LeaderF' Plug 'mileszs/ack.vim' Plug 'easymotion/vim-easymotion' Plug 'haya14busa/incsearch.vim' Plug 'jiangmiao/auto-pairs' Plug 'preservim/nerdtree' Plug 'tiagofumo/vim-nerdtree-syntax-highlight' Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'godlygeek/tabular' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-surround' Plug 'tpope/vim-commentary' Plug 'tpope/vim-repeat' Plug 'tpope/vim-endwise' Plug 'octol/vim-cpp-enhanced-highlight' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'ryanoasis/vim-devicons' Plug 'junegunn/vim-slash' Plug 'junegunn/gv.vim' Plug 'kana/vim-textobj-user' Plug 'kana/vim-textobj-indent' Plug 'kana/vim-textobj-syntax' Plug 'kana/vim-textobj-function' Plug 'sgur/vim-textobj-parameter' Plug 'Shougo/echodoc.vim' Plug 'terryma/vim-smooth-scroll' Plug 'rhysd/clever-f.vim' Plug 'vim-scripts/indentpython.vim' Plug 'w0rp/ale' " 加载自定义插件 if filereadable(expand($HOME . '/.vimrc.custom.plugins')) source $HOME/.vimrc.custom.plugins endif call plug#end() " load vim default plugin runtime macros/matchit.vim " 编辑vimrc相关配置文件 " nnoremap <leader>e :edit $MYVIMRC<cr> nnoremap <leader>vc :edit ~/.vimrc.custom.config<cr> nnoremap <leader>vp :edit ~/.vimrc.custom.plugins<cr> " 查看vimplus的help文件 nnoremap <leader>h :view +let\ &l:modifiable=0 ~/.vimplus/help.md<cr> " 打开当前光标所在单词的vim帮助文档 nnoremap <leader>H :execute ":help " . expand("<cword>")<cr> " 重新加载vimrc文件 nnoremap <leader>s :source $MYVIMRC<cr> " 安装、更新、删除插件 nnoremap <leader><leader>i :PlugInstall<cr> nnoremap <leader><leader>u :PlugUpdate<cr> nnoremap <leader><leader>c :PlugClean<cr> " 分屏窗口移动 nnoremap <c-j> <c-w>j nnoremap <c-k> <c-w>k nnoremap <c-h> <c-w>h nnoremap <c-l> <c-w>l " 复制当前选中到系统剪切板 vmap <leader><leader>y "+y " 将系统剪切板内容粘贴到vim nnoremap <leader><leader>p "+p " 打开文件自动定位到最后编辑的位置 autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g'\"" | endif " 主题设置 set background=dark let g:onedark_termcolors=256 colorscheme onedark " airline let g:airline_theme="onedark" let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#enabled = 1 if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_left_sep = '' let g:airline_left_alt_sep = '' let g:airline_right_sep = '' let g:airline_right_alt_sep = '' " cpp-mode nnoremap <leader>y :CopyCode<cr> nnoremap <leader>p :PasteCode<cr> nnoremap <leader>U :GoToFunImpl<cr> nnoremap <silent> <leader>a :Switch<cr> nnoremap <leader><leader>fp :FormatFunParam<cr> nnoremap <leader><leader>if :FormatIf<cr> nnoremap <leader><leader>t dd :GenTryCatch<cr> xnoremap <leader><leader>t d :GenTryCatch<cr> " change-colorscheme nnoremap <silent> <F9> :PreviousColorScheme<cr> inoremap <silent> <F9> <esc> :PreviousColorScheme<cr> nnoremap <silent> <F10> :NextColorScheme<cr> inoremap <silent> <F10> <esc> :NextColorScheme<cr> nnoremap <silent> <F11> :RandomColorScheme<cr> inoremap <silent> <F11> <esc> :RandomColorScheme<cr> nnoremap <silent> <F12> :ShowColorScheme<cr> inoremap <silent> <F12> <esc> :ShowColorScheme<cr> " prepare-code let g:prepare_code_plugin_path = expand($HOME . "/.vim/plugged/prepare-code") " vim-buffer nnoremap <silent> <c-p> :PreviousBuffer<cr> nnoremap <silent> <c-n> :NextBuffer<cr> nnoremap <silent> <leader>d :CloseBuffer<cr> nnoremap <silent> <leader>D :BufOnly<cr> " vim-edit nnoremap Y :CopyText<cr> nnoremap D :DeleteText<cr> nnoremap C :ChangeText<cr> nnoremap <leader>r :ReplaceTo<space> " nerdtree nnoremap <silent> <leader>e :NERDTreeToggle<cr> let g:NERDTreeFileExtensionHighlightFullName = 1 let g:NERDTreeExactMatchHighlightFullName = 1 let g:NERDTreePatternMatchHighlightFullName = 1 let g:NERDTreeHighlightFolders = 1 let g:NERDTreeHighlightFoldersFullName = 1 let g:NERDTreeDirArrowExpandable='▷' let g:NERDTreeDirArrowCollapsible='▼' " YCM " 如果不指定python解释器路径,ycm会自己搜索一个合适的(与编译ycm时使用的python版本匹配) " let g:ycm_server_python_interpreter = '/usr/bin/python2.7' let g:ycm_confirm_extra_conf = 0 let g:ycm_error_symbol = '✗' let g:ycm_warning_symbol = '✹' let g:ycm_seed_identifiers_with_syntax = 1 let g:ycm_complete_in_comments = 1 let g:ycm_complete_in_strings = 1 let g:ycm_collect_identifiers_from_tags_files = 1 let g:ycm_semantic_triggers = { \ 'c' : ['->', '.','re![_a-zA-z0-9]'], \ 'objc' : ['->', '.', 're!\[[_a-zA-Z]+\w*\s', 're!^\s*[^\W\d]\w*\s', \ 're!\[.*\]\s'], \ 'ocaml' : ['.', '#'], \ 'cpp,objcpp' : ['->', '.', '::','re![_a-zA-Z0-9]'], \ 'perl' : ['->'], \ 'php' : ['->', '::'], \ 'cs,java,javascript,typescript,d,python,perl6,scala,vb,elixir,go' : ['.'], \ 'ruby' : ['.', '::'], \ 'lua' : ['.', ':'], \ 'erlang' : [':'], \ } nnoremap <leader>u :YcmCompleter GoToDeclaration<cr> " 已经使用cpp-mode插件提供的转到函数实现的功能 " nnoremap <leader>i :YcmCompleter GoToDefinition<cr> nnoremap <leader>o :YcmCompleter GoToInclude<cr> nnoremap <leader>ff :YcmCompleter FixIt<cr> " nmap <F5> :YcmDiags<cr> " tagbar let g:tagbar_width = 30 nnoremap <silent> <leader>t :TagbarToggle<cr> " incsearch.vim map / <Plug>(incsearch-forward) map ? <Plug>(incsearch-backward) map g/ <Plug>(incsearch-stay) " vim-easymotion " let g:EasyMotion_smartcase = 1 " map <leader>w <Plug>(easymotion-bd-w) " nmap <leader>w <Plug>(easymotion-overwin-w) " nerdtree-git-plugin let g:NERDTreeGitStatusIndicatorMapCustom = { \ "Modified" : "✹", \ "Staged" : "✚", \ "Untracked" : "✭", \ "Renamed" : "➜", \ "Unmerged" : "═", \ "Deleted" : "✖", \ "Dirty" : "✗", \ "Clean" : "✔︎", \ 'Ignored' : '☒', \ "Unknown" : "?" \ } " LeaderF nnoremap <leader>f :LeaderfFile .<cr> let g:Lf_WildIgnore = { \ 'dir': ['.svn','.git','.hg','.vscode','.wine','.deepinwine','.oh-my-zsh'], \ 'file': ['*.sw?','~$*','*.bak','*.exe','*.o','*.so','*.py[co]'] \} let g:Lf_UseCache = 0 " ack nnoremap <leader>F :Ack!<space> " echodoc.vim let g:echodoc_enable_at_startup = 1 " tabular nnoremap <leader>l :Tab /\|<cr> nnoremap <leader>= :Tab /=<cr> " vim-smooth-scroll noremap <silent> <c-u> :call smooth_scroll#up(&scroll, 0, 2)<CR> noremap <silent> <c-d> :call smooth_scroll#down(&scroll, 0, 2)<CR> noremap <silent> <c-b> :call smooth_scroll#up(&scroll*2, 0, 4)<CR> noremap <silent> <c-f> :call smooth_scroll#down(&scroll*2, 0, 4)<CR> " gv nnoremap <leader>g :GV<cr> nnoremap <leader>G :GV!<cr> nnoremap <leader>gg :GV?<cr> " 异步语法检查 let g:ale_set_highlights = 0 " 自定义error和warning图标 let g:ale_sign_error = '✗' let g:ale_sign_warning = '⚡' " 在vim自带的状态栏中整合ale let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK'] " 显示Linter名称,出错或警告等相关信息 let g:ale_echo_msg_error_str = 'E' let g:ale_echo_msg_warning_str = 'W' let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' " 普通模式下,sp前往上一个错误或警告,sn前往下一个错误或警告 nmap sp <Plug>(ale_previous_wrap) nmap sn <Plug>(ale_next_wrap) " <Leader>s触发/关闭语法检查 nmap <Leader>s :ALEToggle<CR> " <Leader>d查看错误或警告的详细信息 nmap <Leader>d :ALEDetail<CR> " 使用clang对c和c++进行语法检查,对python使用pylint进行语法检查 let g:ale_linters = { \ 'python': ['pyflakes'], \} " 加载自定义配置 if filereadable(expand($HOME . '/.vimrc.custom.config')) source $HOME/.vimrc.custom.config endif
" . . . . . . . S@t.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. " . ..t%SXSS%:;t.X8S% . . . . . . . . . . . . . " . %St8;8:X;8:8:8%8;%%:@S: . . . . .... . . . . . . . . . . . . . . . .... " . 8: %.;t;S;%@88:X.8X8%;8S t@@% . %@@t .X88X . . . %@@@@@@@@@X: . . . . . " ..X.;X%8t8%8ttX.88;8.8%:;% ;8:SX%. SX.8S. St88: . . . . ..XS.@%SSS88S@:. X@@% . . . . . . ...... " . X;:;8SS888;8tt;8:8:8; t:t8S 8:Xt. :8888: .%888:. .SSSSSSSSSSS%: .S888t @@8X: .%.88 .SSt .:SS; .%SSSSSSSS%. " :t8 :;X8S;8.8S;8S.8.t8:%8XS.. S8.8:.S8;8; :@;@88 . S:88 X.88@88:@t..%S. .. X;8@: :%:;8. X%:X;. 8;.; %S8@XXSXSS8.. " .t88; X;8S8888;8S8t 8S88SSStt:. @.%8St;@8X . t .8S S:88:%888%;8t8:..S.S@%SSS8S88t .% @; X:.X. 88t :.t@t8@ ....... " 8; :888XSStS;88;88X%;;tt::;;8@ ..%X88:88Xt .S@.::. S@8% X8.@;S888X .%;88SSSS.SX.:. 8S88: @;88t. 8.S8 t;@8@88@88S.. " S. :tX: ;%8S8 : .::. %8t %S 8. @88t8 8t. . . .@8; 8888 @@%S;t8.8S .:SX8; .:.... . S8; ..8888:..8:8@: ;St@@888.@@.. " :8:;888888 .; . 8%8@ .8X.@8X . X%8@ .t@8S X88X:%888X .@8@8t .. . SX%X .X;;S@%tS8; ;..SttSXS8888S. " t.8XX;;8X% XX. . %8X8; . :tX8@t . t8X8: %@@S X8@@:t8tXt...:%t.. . X:8X X8@@88@888t. %88t888 888t. " . :8;S: . S@. t8;8:: . .;:;. . . .%@%: t%%; .%%;..: t. .; : . . . %;8. ;X;X%.:.: t ;t ;:: :t;.. " :%@t%8 88. . . :: . .. . . . . .. . .. . . . . ... . . . . .. " .. 8888 .. ... . . . . . . . .. . . . . . . .. . . . . . . .... " " Author: chxuan <787280310@qq.com> " Repository: https://github.com/chxuan/vimplus " Create Date: 2016-04-10 " License: MIT """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 通用设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let mapleader = " " " 定义<leader>键 set nocompatible " 设置不兼容原始vi模式 filetype on " 设置开启文件类型侦测 filetype plugin on " 设置加载对应文件类型的插件 set noeb " 关闭错误的提示 syntax enable " 开启语法高亮功能 syntax on " 自动语法高亮 set t_Co=256 " 开启256色支持 set cmdheight=2 " 设置命令行的高度 set showcmd " select模式下显示选中的行数 set ruler " 总是显示光标位置 set laststatus=2 " 总是显示状态栏 set number " 开启行号显示 set cursorline " 高亮显示当前行 set whichwrap+=<,>,h,l " 设置光标键跨行 set ttimeoutlen=0 " 设置<ESC>键响应时间 set virtualedit=block,onemore " 允许光标出现在最后一个字符的后面 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 代码缩进和排版 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set autoindent " 设置自动缩进 set cindent " 设置使用C/C++语言的自动缩进方式 set cinoptions=g0,:0,N-s,(0 " 设置C/C++语言的具体缩进方式 set smartindent " 智能的选择对其方式 filetype indent on " 自适应不同语言的智能缩进 set expandtab " 将制表符扩展为空格 set tabstop=4 " 设置编辑时制表符占用空格数 set shiftwidth=4 " 设置格式化时制表符占用空格数 set softtabstop=4 " 设置4个空格为制表符 set smarttab " 在行和段开始处使用制表符 set nowrap " 禁止折行 set backspace=2 " 使用回车键正常处理indent,eol,start等 set sidescroll=10 " 设置向右滚动字符数 set nofoldenable " 禁用折叠代码 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 代码补全 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set wildmenu " vim自身命名行模式智能补全 set completeopt-=preview " 补全时不显示窗口,只显示补全列表 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 搜索设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set hlsearch " 高亮显示搜索结果 set incsearch " 开启实时搜索功能 set ignorecase " 搜索时大小写不敏感 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 缓存设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nobackup " 设置不备份 set noswapfile " 禁止生成临时文件 set autoread " 文件在vim之外修改过,自动重新读入 set autowrite " 设置自动保存 set confirm " 在处理未保存或只读文件的时候,弹出确认 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 编码设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 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 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " gvim/macvim设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if has("gui_running") let system = system('uname -s') if system == "Darwin\n" set guifont=Droid\ Sans\ Mono\ Nerd\ Font\ Complete:h18 " 设置字体 else set guifont=DroidSansMono\ Nerd\ Font\ Regular\ 18 " 设置字体 endif set guioptions-=m " 隐藏菜单栏 set guioptions-=T " 隐藏工具栏 set guioptions-=L " 隐藏左侧滚动条 set guioptions-=r " 隐藏右侧滚动条 set guioptions-=b " 隐藏底部滚动条 set showtabline=0 " 隐藏Tab栏 set guicursor=n-v-c:ver5 " 设置光标为竖线 endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " C,C++, Py, Sh 按F5编译运行 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" map <F5> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" if &filetype == 'c' exec "!g++ % -o %<" exec "! ./%<" elseif &filetype == 'cpp' exec "!g++ % -o %<" exec "! ./%<" elseif &filetype == 'java' exec "!javac %" exec "!java %<" elseif &filetype == 'python' exec "!python %" elseif &filetype == 'sh' :!sh % endif endfunc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 新文件标题 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "新建.c,.h,.sh,.java..py文件,自动插入文件头 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.py,*.java exec ":call SetTitle()" ""定义函数SetTitle,自动插入文件头 func SetTitle() "如果文件类型为.sh文件 if &filetype == 'sh' call setline(1,"\#########################################################################") call append(line("."), "\# File Name: ".expand("%")) call append(line(".")+1, "\# Author: Longfei") call append(line(".")+2, "\# Blog: https://www.cnblogs.com/luoxian1011") call append(line(".")+3, "\# Created Time: ".strftime("%c")) call append(line(".")+4, "\#########################################################################") call append(line(".")+5, "\#!/bin/bash") call append(line(".")+6, "") "如果文件类型为.py文件 elseif &filetype == 'python' call setline(1,"\#########################################################################") call append(line("."), "\# File Name: ".expand("%")) call append(line(".")+1, "\# Author: Longfei") call append(line(".")+2, "\# Blog: https://www.cnblogs.com/luoxian1011") call append(line(".")+3, "\# Created Time: ".strftime("%c")) call append(line(".")+4, "\#########################################################################") call append(line(".")+5, "\#!/bin/env python") call append(line(".")+6, "") else call setline(1, "/*************************************************************************") call append(line("."), " > File Name: ".expand("%")) call append(line(".")+1, " > Author: ma6174") call append(line(".")+2, " > Mail: ma6174@163.com ") call append(line(".")+3, " > Created Time: ".strftime("%c")) call append(line(".")+4, " ************************************************************************/") call append(line(".")+5, "") endif if &filetype == 'cpp' call append(line(".")+6, "#include<iostream>") call append(line(".")+7, "using namespace std;") call append(line(".")+8, "") endif if &filetype == 'c' call append(line(".")+6, "#include<stdio.h>") call append(line(".")+7, "") endif "新建文件后,自动定位到文件末尾 autocmd BufNewFile * normal G endfunc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 卸载默认插件UnPlug """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! s:deregister(repo) let repo = substitute(a:repo, '[\/]\+$', '', '') let name = fnamemodify(repo, ':t:s?\.git$??') call remove(g:plugs, name) endfunction command! -nargs=1 -bar UnPlug call s:deregister(<args>) " load vim default plugin runtime macros/matchit.vim " 编辑vimrc相关配置文件 " nnoremap <leader>e :edit $MYVIMRC<cr> nnoremap <leader>vc :edit ~/.vimrc.custom.config<cr> nnoremap <leader>vp :edit ~/.vimrc.custom.plugins<cr> " 查看vimplus的help文件 nnoremap <leader>h :view +let\ &l:modifiable=0 ~/.vimplus/help.md<cr> " 打开当前光标所在单词的vim帮助文档 nnoremap <leader>H :execute ":help " . expand("<cword>")<cr> " 重新加载vimrc文件 nnoremap <leader>s :source $MYVIMRC<cr> " 安装、更新、删除插件 nnoremap <leader><leader>i :PlugInstall<cr> nnoremap <leader><leader>u :PlugUpdate<cr> nnoremap <leader><leader>c :PlugClean<cr> " 分屏窗口移动 nnoremap <c-j> <c-w>j nnoremap <c-k> <c-w>k nnoremap <c-h> <c-w>h nnoremap <c-l> <c-w>l " 复制当前选中到系统剪切板 vmap <leader><leader>y "+y " 将系统剪切板内容粘贴到vim nnoremap <leader><leader>p "+p " 打开文件自动定位到最后编辑的位置 autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g'\"" | endif