Vim/GVim_Windows下的Vim配置记录

先贴上效果

在这里插入图片描述

在这里插入图片描述

基础

根路径的 _vimrc 文件

打开, 粘贴如下


插件

这个就要麻烦很多了

GitHub地址

中文文档

三步,

1.> Git 是必不可少的, 如果有问题 自行谷歌 …

2.> 用来传输数据的curl, 官网 https://curl.haxx.se/Github

3.> vundle vim的插件管理器

强烈建议先看一遍文档!

上面两个是 Linux上的安装介绍, 下面的是 Win的介绍, 都差不多, 仅仅插在 curl 和 文件夹名 上罢了

因为是 WIn平台的, 我们直接使用绝对路径

git clone https://github.com/VundleVim/Vundle.vim.git F:\IDE\GVim\vimfiles\bundle\Vundle.vim

注意了, 既然使用了绝对路径, 克隆下来以后, 那么官网文档的例子也需要修改路径( 在 vim文件夹编辑机_vimrc )





贴一下插件相关的配置

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 编码设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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
"解决consle输出乱码
language messages zh_CN.utf-8
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 快捷键定义 
let mapleader = "," 	"定义<leader>键
source $VIMRUNTIME/vimrc_example.vim
nmap <leader>s :source F:/IDE/GVim/Vim/_vimrc<cr>
" nmap <leader>e :e $VIM/_vimrc<cr>

inoremap ( ()<LEFT>
inoremap [ []<LEFT>
inoremap { {}<LEFT>
inoremap " ""<LEFT>
inoremap ' ''<LEFT>
inoremap < <><LEFT>

function! RemovePairs()
    let s:line = getline(".")
    let s:previous_char = s:line[col(".")-1]

    if index(["(","[","{"],s:previous_char) != -1
        let l:original_pos = getpos(".")
        execute "normal %"
        let l:new_pos = getpos(".")
        " only right (
        if l:original_pos == l:new_pos
            execute "normal! a\<BS>"
            return
        end

        let l:line2 = getline(".")
        if len(l:line2) == col(".")
            execute "normal! v%xa"
        else
            execute "normal! v%xi"
        end
    else
        execute "normal! a\<BS>"
    end
endfunction

function! RemoveNextDoubleChar(char)
    let l:line = getline(".")
    let l:next_char = l:line[col(".")]

    if a:char == l:next_char
        execute "normal! l"
    else
        execute "normal! i" . a:char . ""
    end
endfunction

inoremap <BS> <ESC>:call RemovePairs()<CR>a
inoremap ) <ESC>:call RemoveNextDoubleChar(')')<CR>a
inoremap ] <ESC>:call RemoveNextDoubleChar(']')<CR>a
inoremap } <ESC>:call RemoveNextDoubleChar('}')<CR>a
inoremap > <ESC>:call RemoveNextDoubleChar('>')<CR>a

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 隐藏GVIM菜单及设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd BufWritePost $MYVIMRC source $MYVIMRC 	"让vimrc配置变更立即生效'
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
set mouse= 	" 禁用鼠标
"winpos 700 400 		"设置初始界面位置
winpos 1000 271
set lines=50 columns=100 	" 窗口大小
set splitbelow 	" 分割出来的窗口位于当前窗口下边/右边
set splitright
set guioptions-=T 	"不显示工具/菜单栏
set guioptions-=m
set guioptions-=L
set guioptions-=r
set guioptions-=b
set guioptions-=e 	" 使用内置 tab 样式而不是 gui
set nolist

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 通用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd BufWritePost $MYVIMRC source $MYVIMRC 	" 让vimrc配置变更立即生效
set nocompatible    	"设置不兼容原始vi模式
set noerrorbells 	"关闭错误信息响铃"
set noeb        	"关闭错误提示声音
set vb		"用屏幕闪烁代替错误声音
set showcmd 	"输入的命令显示出来,看的清楚"
filetype on 	"设置开启文件类型侦测
filetype plugin on  	"加载对应文件类型插件
" set spell		"开启拼写检查
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 cursorcolumn	"高亮显示当前列
set ruler		" 显示光标当前位置
set ignorecase 	" 设置默认进行大小写不敏感查找
set smartcase 	" 如果有一个大写字母,则切换到大小写敏感查找
set incsearch 	" 可以在敲键的同时搜索,按下回车把移动光标移动到匹配的词; 按下 Esc 取消搜索。
set wrapscan 	" 用来设置到文件尾部后是否重新从文件头开始搜索。
autocmd cursorhold * set nohlsearch 	" 当光标一段时间保持不动了,就禁用高亮
noremap n :set hlsearch<cr>n 		" 当输入查找命令时,再启用高亮
noremap N :set hlsearch<cr>N
noremap / :set hlsearch<cr>/
noremap ? :set hlsearch<cr>?
noremap * *:set hlsearch<cr>
set whichwrap+=<,>,h,l  	"设置光标键跨行
set virtualedit=block,onemore  "允许光标出现在最后一个字符的后面
set clipboard+=unnamed 	" Vim 的默认寄存器和系统剪贴板共享
set winaltkeys=no 		" 设置 alt 键不映射到菜单栏

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 代码缩进与排版
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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 showmatch	" 显示括号匹配
set paste		" 在Vim中通过鼠标右键粘贴时会在行首多出许多缩进和空格,可以在插入模式下粘贴内容时不会有任何格式变形、胡乱缩进等问题。
set listchars=tab:>-,trail:-	" 显示空格和tab键
 if has("autocmd")	" 从上次编辑位置打开
    au BufReadPost * if line("`\"") > 1 && line("`\"") <= line("$") | exe "normal! g`\"" | endif
    " for simplicity, "  au BufReadPost * exe "normal! g`\"", is Okay.
endif


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 代码补全
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set smartindent  	" 为C程序提供自动缩进
set completeopt=preview,menu  	"代码补全
filetype plugin indent on 
set completeopt=longest,menu "打开文件类型检测, 加了这句才可以用智能补全
set completeopt-=preview 	" 补全内容不以分割子窗口形式出现,只显示补全列表
set wildmenu        		"vim自身命令行模式智能补全
set completeopt-=preview   	"补全时不显示窗口,只显示补全列表
" 以下文件类型,敲 {<回车> 后,自动加入反括号 }
au FileType c,cpp,h,java,css,js,nginx,scala,go inoremap  <buffer>  {<CR> {<CR>}<Esc>O

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"代码折叠
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set foldmethod=syntax       "设置基于语法进行代码折叠
set nofoldenable            "关闭代码折叠

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 缓存设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set undodir=F:/IDE/GVim/Vim/_undodir	" 缓存文件目录
set directory=F:/IDE/GVim/Vim/_swapdir	" 临时文件目录 
"set noundofile " 禁止生成缓存文件
"set nobackup
"set noswapfile
set autoread        	"文件在vim之外修改过,自动重新载入
set autowrite       	"设置自动保存
set confirm        	"在处理未保存或只读文件时,弹出确认

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""


" ----------------python配置---------------------------------------------------
let g:ycm_path_to_python_interpreter='F:\IDE\Anaconda3\python.exe'
" set pythonthreedll=python37.dll
set pythondll=F:/IDE/Anaconda3/python37.dll
set pythonhome=F:/IDE/Anaconda3
set pythonthreedll=F:/IDE/Anaconda3/python37.dll
set pythonthreehome=F:/IDE/Anaconda3
"--------------------------------------------------------------------------------

" -----------------颜色配置-------------------------------------------------------
set guifont=Microsoft\ YaHei\ Mono:h12 		" 设置字体, 字体中带有空格 \ 代表转义
colorscheme MyMonokai " 由于未知原因导致注释颜色在配色文件和此处都无法修改, 所以放在此文件最后一行修改GVim注释颜色为灰色
" colorscheme wombat
" colorscheme molokai
" colorscheme solarized
" colorscheme default

" hi Normal guibg=#9999CC guifg=Black  
" 第一行的hi Normal中guibg是设置编辑区的显示背景色,guifg是设置前景色,即文字色。(注:guifg、guibg是用在gvim下,而控制台 cmd命令窗口下运行的vim则是用ctermbg、ctermfg,其它也是这样)
" hi LineNr guibg=#003366 guifg=#99ccff ctermbg=7777 ctermfg=yellow  " lineNr是设置行号区的色彩(同样bg是指背景色,fg是指前景色)

" set cursorline  
" hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white guifg=black guibg=#66cc99 " 是设置当前行的色彩,即光标所在行。

"--------------------------------------------------------------------------------

" -----------------插件管理vundle#begin和vundle#end之间---------------------
set nocompatible              " 去除VI一致性,必须
filetype off                  " 必须

set rtp+=F:/IDE/GVim/vimfiles/bundle/Vundle.vim	" 设置包括vundle和初始化相关的runtime path
call vundle#begin('F:/IDE/GVim/vimfiles/bundle/')	" 另一种选择, 指定一个vundle安装插件的路径

Plugin 'VundleVim/Vundle.vim'		" 让vundle管理插件版本,必须

set encoding=utf-8

Plugin 'flazz/vim-colorschemes' " 下载一堆主题
Plugin 'luochen1990/rainbow' "彩虹括号
let g:rainbow_active = 1 "0 if you want to enable it later via :RainbowToggle
Plugin 'Lokaltog/vim-powerline' "status 美化
Plugin 'octol/vim-cpp-enhanced-highlight' "对c++语法高亮增强
Plugin 'kshenoy/vim-signature' "书签可视化的插件
Plugin 'vim-scripts/BOOKMARKS--Mark-and-Highlight-Full-Lines' "书签行高亮
Plugin 'majutsushi/tagbar' "taglist的增强版,查看标签,依赖于ctags
Plugin 'scrooloose/nerdcommenter' "多行注释,leader键+cc生成, leader+cu删除注释
Plugin 'scrooloose/nerdtree' "文件浏览
Plugin 'Valloric/YouCompleteMe' "自动补全
" Plugin 'ycm-core/YouCompleteMe'
Plugin 'kien/ctrlp.vim' "搜索历史打开文件,在命令行模式下按ctrl+p触发
Plugin 'vim-scripts/grep.vim' "在命令行模式使用grep命令,:Grep
Plugin 'Lokaltog/vim-easymotion' "快速跳转,按两下leader键和f组合
Plugin 'vim-scripts/ShowTrailingWhitespace.git' "高亮显示行尾的多余空白字符
Plugin 'vim-scripts/indentpython.vim.git'
Plugin 'vim-scripts/Solarized.git' "主题方案
Plugin 'nathanaelkane/vim-indent-guides.git' "缩进对齐显示
Plugin 'vim-scripts/indexer.tar.gz' "自动生成标签
"Plugin 'vim-scripts/DfrankUtil' "indexer 依赖
"Plugin 'vim-scripts/vimprj' "indexer 依赖
Plugin 'davidhalter/jedi-vim' "python 补全,不依赖于tags,但比较慢,可以使用indexer替换,但不能跳转项目外
Plugin 'vim-scripts/Markdown'
Plugin 'tpope/vim-surround'
Plugin 'ekalinin/Dockerfile.vim'




call vundle#end()            " 必须
filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
filetype plugin on 	" 忽视插件改变缩进
" ----------------------------------------------------------------------------





:set background=dark


" ----------------插件的属性配置--------------------------------------------
" Powerline 设置
" 设置状态栏主题风格
let g:Powerline_colorscheme='solarized256'
" 设置tagbar
" 设置 tagbar 子窗口的位置出现在主编辑区的左边
let tagbar_left=1
let g:cpp_class_scope_highlight = 1
let g:cpp_member_variable_highlight = 1
let g:cpp_class_decl_highlight = 1
let g:cpp_posix_standard = 1
let g:cpp_experimental_simple_template_highlight = 1
let g:cpp_experimental_template_highlight = 1
let g:cpp_concepts_highlight = 1
let g:cpp_no_function_highlight = 1
"cpp-enhanced-highlight
"高亮类,成员函数,标准库和模板
let g:cpp_class_scope_highlight = 1
let g:cpp_member_variable_highlight = 1
let g:cpp_concepts_highlight = 1
let g:cpp_experimental_simple_template_highlight = 1
"文件较大时使用下面的设置高亮模板速度较快,但会有一些小错误
"let g:cpp_experimental_template_highlight = 1
" " 设置显示/隐藏标签列表子窗口的快捷键。速记:identifier list by tag
nnoremap <Leader>t :TagbarToggle<CR>
" " 设置标签子窗口的宽度
let tagbar_width=32
" " tagbar 子窗口中不显示冗余帮助信息
let g:tagbar_compact=1
" " 设置 ctags 对哪些代码标识符生成标签
" signature设置
let g:SignatureMap = {
        \ 'Leader'             :  "m",
        \ 'PlaceNextMark'      :  "m,",
        \ 'ToggleMarkAtLine'   :  "m.",
        \ 'PurgeMarksAtLine'   :  "m-",
        \ 'DeleteMark'         :  "dm",
        \ 'PurgeMarks'         :  "mda",
        \ 'PurgeMarkers'       :  "m<BS>",
        \ 'GotoNextLineAlpha'  :  "']",
        \ 'GotoPrevLineAlpha'  :  "'[",
        \ 'GotoNextSpotAlpha'  :  "`]",
        \ 'GotoPrevSpotAlpha'  :  "`[",
        \ 'GotoNextLineByPos'  :  "]'",
        \ 'GotoPrevLineByPos'  :  "['",
        \ 'GotoNextSpotByPos'  :  "mn",
        \ 'GotoPrevSpotByPos'  :  "mp",
        \ 'GotoNextMarker'     :  "[+",
        \ 'GotoPrevMarker'     :  "[-",
        \ 'GotoNextMarkerAny'  :  "]=",
        \ 'GotoPrevMarkerAny'  :  "[=",
        \ 'ListLocalMarks'     :  "ms",
        \ 'ListLocalMarkers'   :  "m?"
        \ }
" 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file list
nmap <Leader>f :NERDTreeToggle<CR>
" 设置NERDTree子窗口宽度
let NERDTreeWinSize=32
" 设置NERDTree子窗口位置
let NERDTreeWinPos="left"
" 显示隐藏文件
let NERDTreeShowHidden=1
" NERDTree 子窗口中不显示冗余帮助信息
let NERDTreeMinimalUI=1
" 删除文件时自动删除文件对应 buffer
let NERDTreeAutoDeleteBuffer=1
" YCM 补全菜单配色
" 菜单
highlight Pmenu ctermfg=2 ctermbg=3 guifg=#005f87 guibg=#EEE8D5
" 选中项
highlight PmenuSel ctermfg=2 ctermbg=3 guifg=#AFD700 guibg=#106900
" 补全功能在注释中同样有效
let g:ycm_complete_in_comments=1
" " 允许 vim 加载 .ycm_extra_conf.py 文件,不再提示
" let g:ycm_confirm_extra_conf=0
" 开启 YCM 标签补全引擎
" let g:ycm_collect_identifiers_from_tags_files=1
" 引入 C++ 标准库tags
" set tags+=/data/misc/software/misc./vim/stdcpp.tags
" YCM 集成 OmniCppComplete 补全引擎,设置其快捷键
"inoremap <leader>; <C-x><C-o>
" 从第一个键入字符就开始罗列匹配项
" let g:ycm_min_num_of_chars_for_completion=1
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
" 语法关键字补全
" let g:ycm_seed_identifiers_with_syntax=1
" let g:ycm_global_ycm_extra_conf = 'F:/IDE/GVim/vimfiles/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
""" color settings
set t_Co=256
if has("gui_running")
    set guioptions=gR
    set mousemodel=popup
    set background=light
    ""hi LineNr cterm=bold guibg=black guifg=white
    ""hi CursorLine cterm=none ctermbg=lightgray ctermfg=none
    ""hi CursorColumn cterm=none ctermbg=lightgray ctermfg=none
else
    set background=dark
    ""hi LineNr cterm=bold ctermbg=black ctermfg=white
    ""hi CursorLine cterm=none ctermbg=darkgray ctermfg=none
    ""hi CursorColumn cterm=none ctermbg=darkgray ctermfg=none
endif
" indent guides
"let g:indent_guides_enable_on_vim_startup=1
" 从第二层开始可视化显示缩进
let g:indent_guides_start_level=2
"let g:indent_guides_auto_colors = 0
"hi IndentGuidesOdd  guibg=red   ctermbg=3
"hi IndentGuidesEven guibg=green ctermbg=4
" 色块宽度
let g:indent_guides_guide_size=1
" 快捷键 i 开/关缩进可视化
noremap <Leader>sj :IndentGuidesToggle<CR>




" ---------------------------------------------------------------------------------














" --------------------以下范例用来支持不同格式的插件安装.----------------------
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
" Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
" Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
" Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
" Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
" Plugin 'ascenator/L9', {'name': 'newL9'}
"----------------------------------------------------------------------------------



" ---------------------简要帮助文档----------------------------------------------
" :PluginList       - 列出所有已配置的插件
" :PluginInstall    - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
" :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
" :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
" :BundleList -列举出列表中(.vimrc中)配置的所有插件
" :BundleInstall -安装列表中全部插件
" :BundleInstall! -更新列表中全部插件
" :BundleSearch foo -查找foo插件
" :BundleSearch! foo -刷新foo插件缓存
" :BundleClean -清除列表中没有的插件
" :BundleClean! -清除列表中没有的插件
"
" 查阅 :h vundle 获取更多细节和wiki以及FAQ
" 将你自己对非插件片段放在这行之后
hi Comment guifg=#807d71
发布了160 篇原创文章 · 获赞 146 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44510468/article/details/104104250