gvim8.2 vim 用vim-plug安装配置taglist ctrlp nerdtree winmanager nerdcommenter neocomplete 等常用程序

本文用到的资源合集

https://download.csdn.net/download/howard789/14946809

 

1. 到https://github.com/vim/vim-win32-installer/releases下载, 本文用的是
8.2的zip版本的, gvim_8.2.2406_x64_signed.zip

2. 解压缩后, 将vim目录(里面包含一个vim82)放到安装目录D:\service下, 新建环境变量VIM_HOME = D:\service\vim\vim82 并加到path. 之后手动安装插件的时候, 都是解压缩后将目录档案(autoload,plugin,bitmaps,colors,doc) 放到vim82里对应的文件夹里, 有时候需要覆盖原来的档案,  README.mk 还有LICENSE等等不在文件夹里的档案是不需要的

3. 配色方案知名的有:
molokai:
https://github.com/tomasr/molokai/blob/master/colors/molokai.vim

solarized:
https://github.com/altercation/solarized/tree/master/vim-colors-solarized

gruvbox:
https://github.com/morhetz/gruvbox
https://github.com/jacoborus/tender.vim
https://github.com/lisposter/vim-blackboard

这里使用molokai, 把molokai.vim 放到$VIM_HOME/colors
_vimrc
colorscheme molokai

4. 安装 vim-plug 插件管理
https://github.com/junegunn/vim-plug 下载
将plug.vim 文件,根据操作系统不同,放置在以下autoload目录中:
Linux: ~/.vim/autoload
Windows: $VIM_HOME/autoload\plug.vim

5. 在vim文件夹下新建 _vimrc档案, 可以用本文最后的

6. 安装ctags
到http://ctags.sourceforge.net/下载最新的windows版ctags58.zip
解压缩放到D:\service\ctags58
环境变量 CTAG_HOME   D:\service\ctags58 并加到path


7. 手动添加以下3个插件下载后解压缩放到$VIM_HOME, _vimrc的配置在文末的_vimrc里. 手动添加的原因是使用vim-plug下载需要设置git密码,如果设置好了也可以用vim-plug

ctrlp改进版(原版是 kien/ctrlp.vim)
https://github.com/ctrlpvim/ctrlp.vim

vim-SystemVerilog ,替换原来系统的档案
https://github.com/WeiChungWu/vim-SystemVerilog

taglist最新版4.6
https://github.com/esukram/vim-taglist


8. 将_vimrc 放到vim目录下,打开vim编辑器,刚开始的时候会报错, 因为有些插件还没有安装但是配置文件已经先写上去了, 先不用在意, 执行:PlugInstall ,最后出现Finishing....Done就是完成了,重新启动程序

自动安装以下九个插件

Plug 'scrooloose/nerdtree'
Plug 'vim-scripts/winmanager'
Plug 'preservim/nerdcommenter'
Plug 'Shougo/neocomplete'
Plug 'luochen1990/rainbow'
Plug 'esukram/vim-taglist'

"三个snippet的插件同时安装 supertab 用来防止使用 tab 展开 snippet 与 youcompleteme 的 tab 补全发生冲突
Plug 'ervandew/supertab'  
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'

 

 

 

9. 异常排除:
先检查Plugged里的文件夹是否有资料, 如果只有.git文件夹或档案太少,删除这个文件夹重新执行 :PlugInstall

10. 完成后,打开一个cpp档案, 按F2(自定义的WinManager快捷键) 应该会出现以下的图片, 这就完成了

10. _vimrc档案

我的电脑里python安装在D:\service\Anaconda3

另外在$VIM_HOME下建立一个新的文件夹 mysnippets 用来放自定义的snippets

 



"-----------------------------------------------------------------------------------
" 文件检测
"-----------------------------------------------------------------------------------
"filetype on "文件类型检测功能
"filetype indent on  " 针对不同的文件类型采用不同的缩进格式
"filetype plugin on " 针对不同的文件类型加载对应的插件
filetype plugin indent on " 三合一的写法

"-----------------------------------------------------------------------------------
" vim-plug
"-----------------------------------------------------------------------------------
call plug#begin('$Vim_HOME\plugged') " vim-plug存放在自定义的目录plugged
Plug 'scrooloose/nerdtree'
Plug 'vim-scripts/winmanager'
Plug 'preservim/nerdcommenter'
Plug 'Shougo/neocomplete'
Plug 'luochen1990/rainbow'
Plug 'esukram/vim-taglist'

"三个snippet的插件同时安装 supertab 用来防止使用 tab 展开 snippet 与 youcompleteme 的 tab 补全发生冲突
Plug 'ervandew/supertab'  
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'

call plug#end()

"-----------------------------------------------------------------------------------
" 指定vim使用的python dll的位置
"-----------------------------------------------------------------------------------
let &pythonthreedll='D:\service\Anaconda3\python37.dll'
let &pythonthreehome='D:\service\Anaconda3'


"-----------------------------------------------------------------------------------
" 使用配色方案
"-----------------------------------------------------------------------------------
colorscheme molokai 

"-----------------------------------------------------------------------------------
" 一般设置
"-----------------------------------------------------------------------------------
set nu "显示行号
syntax on "开启语法高亮
set guifont=courier_new:h14  "使用字体
set ruler "显示光标当前位置
set history=100 "历史命令保存行数
set autoread "当文件被外部改变时自动读取


"取消自动备份及产生swp文件
set nobackup
set nowb
set noswapfile

"set cursorline   "高亮光标所在行
"set novisualbell  "取消光标闪烁
set laststatus=2  "总是显示状态行
set showcmd  "状态栏显示当前执行的命令
set cmdheight=3   "设置命令行高度为3
set paste   "粘贴时保持格式
set showmatch  "高亮显示匹配的括号
set ignorecase "在搜索的时候忽略大小写
set hlsearch "高亮被搜索的句子
set incsearch "在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set autoindent "继承前一行的缩进方式,特别适用于多行注释
set smartindent "为C程序提供自动缩进
set cindent  "使用C样式的缩进

set tabstop=2  "制表符为4

"统一缩进为4
set softtabstop=2
set shiftwidth=2
set expandtab

set nowrap  "取消换行
set shortmess=atI "启动的时候不显示那个援助索马里儿童的提示

"在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\

set scrolloff=3 "光标移动到buffer的顶部和底部时保持3行距离, 或set so=3

"设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

"设定编码
"set enc=utf-8
set fileencodings=ucs-bom,utf-8,chinese
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8

set cursorline "突出显示当前行

"启用鼠标
set mouse=a
set selection=exclusive
set selectmode=mouse,key

set laststatus=2  "显示状态栏
set ruler  "显示光标当前位置
set guioptions+=m   "菜单栏
set guioptions+=T  "工具栏

set nocp "关闭vi模式
set nocompatible "vim在工作的时候不需要考虑和vi兼容
set clipboard+=unnamed  "与windows共享剪贴板

"-----------------------------------------------------------------------------------
" Settings for winManager
"-----------------------------------------------------------------------------------
let g:winManagerWindowLayout='FileExplorer|TagList'  "设置界面分割
let g:winManagerWidth = 30   "设置winmanager的宽度,默认为25 
nmap <f2> :WMToggle<cr> "快捷键

"-----------------------------------------------------------------------------------
" Settings for NerdTree
"-----------------------------------------------------------------------------------
""map <f2> :NERDTreeToggle<cr>  ""将F2设置为开关NERDTree的快捷键
""修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
let g:NERDTreeWinPos='left'  ""窗口位置
let g:NERDTreeSize=30  ""窗口尺寸
let g:NERDTreeShowLineNumbers=1  ""窗口是否显示行号
let g:NERDTreeHidden=0  ""不显示隐藏文件


"-----------------------------------------------------------------------------------
" Settings for tagslist
"-----------------------------------------------------------------------------------
let Tlist_Ctags_Cmd = 'ctags'   "环境变量要将ctags.exe的目录加入path
let Tlist_Show_One_File = 1        "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1      "如果taglist窗口是最后一个窗口,则退出vim\窗口
let Tlist_Auto_Open = 1  "没反应
let Tlist_Use_Right_Window = 0 "让taglist窗口出现在Vim的右边边,选0出现在左边
let Tlist_File_Fold_Auto_Close = 1 "当同时显示多个文件中的tag时,设置为1,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。
"let Tlist_Sort_Type =’name’  "Tag的排序规则,以名字排序。默认是以在文件中出现的顺序排序
let Tlist_GainFocus_On_ToggleOpen = 1  "Taglist窗口打开时,立刻切换为有焦点状态
"let Tlist_WinWidth = 32  "设置窗体宽度为32,可以根据自己喜好设置
let Tlist_Use_SingleClick=1  "设置单击tag就跳到tag定义的位置
"map <F3> :TlistToggle<CR> "热键设置
nmap <F9> <Esc>:!ctags -R *<CR>  "生成一个tags文件
let Tlist_Show_Menu = 0 "菜单栏出现tags,可以选择sort by name 或 order可以 reflash menu,基本没有什么用
"nnoremap <silent> <F8> :TlistToggle<CR>

"-----------------------------------------------------------------------------------
" Settings for UltiSnips
"-----------------------------------------------------------------------------------
" make YCM compatible with UltiSnips (using supertab)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
let g:SuperTabDefaultCompletionType = '<C-n>'

" better key bindings for UltiSnipsExpandTrigger
let g:UltiSnipsSnippetDirectories = ['mysnippets','UltiSnips']
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"

"-----------------------------------------------------------------------------------
" Settings for NERD Commenter
"-----------------------------------------------------------------------------------
" 默认情况下,在注释分隔符后添加空格
let g:NERDSpaceDelims = 1

" 对美化的多行注释使用压缩语法(貌似这个没什么卵用)
let g:NERDCompactSexyComs = 1

" 按行对齐注释分隔符左对齐,而不是按代码缩进
let g:NERDDefaultAlign = 'left'

" 默认情况下,将语言设置为使用其备用分隔符(不是很明白所以忽略)
let g:NERDAltDelims_java = 1

" 添加您自己的自定义格式或覆盖默认格式(你懂的)
let g:NERDCustomDelimiters = { 'php': { 'left': '/*','right': '*/' },'html': { 'left': '<!--','right': '-->' },'py': { 'left': '#' },'sh': { 'left': '#' } }

" 允许注释和反转空行(在注释区域时很有用) (没亲测)
let g:NERDCommentEmptyLines = 1

" 取消注释时启用尾随空白的修剪
let g:NERDTrimTrailingWhitespace = 1

" 启用nerdcommenttoggle检查是否对所有选定行进行了注释
let g:NERDToggleCheckAllLines = 1

"" leader默认是\ 
"" \cc 注释当前行和选中行
"" \cn 没有发现和\cc有区别
"" \c<空格> 如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情况执行反转注释操作
"" \cm 对被选区域用一对注释符进行注释,前面的注释对每一行都会添加注释
"" \ci 执行反转注释操作,选中区域注释部分取消注释,非注释部分添加注释
"" \cs 添加性感的注释,代码开头介绍部分通常使用该注释
"" \cy 添加注释,并复制被添加注释的部分
"" \c$ 注释当前光标到改行结尾的内容
"" \cA 跳转到该行结尾添加注释,并进入编辑模式
"" \ca 转换注释的方式,比如: /**/和//
"" \cl \cb 左对齐和左右对其,左右对其主要针对/**/
"" \cu 取消注释




"-----------------------------------------------------------------------------------
" Settings for neocomplete
"-----------------------------------------------------------------------------------
" Use neocomplete.
let g:neocomplete#enable_at_startup = 1
" Use smartcase.
let g:neocomplete#enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplete#sources#syntax#min_keyword_length = 3
let g:neocomplete#lock_buffer_name_pattern = '\*ku\*'

" Define dictionary.
let g:neocomplete#sources#dictionary#dictionaries = {
    \ 'default' : '',
    \ 'vimshell' : $HOME.'/.vimshell_hist',
    \ 'scheme' : $HOME.'/.gosh_completions'
        \ }

" Define keyword.
if !exists('g:neocomplete#keyword_patterns')
    let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns['default'] = '\h\w*'

" Plugin key-mappings.
inoremap <expr><C-g>     neocomplete#undo_completion()
inoremap <expr><C-l>     neocomplete#complete_common_string()

" Recommended key-mappings.
" <CR>: close popup and save indent.
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
  return neocomplete#close_popup() . "\<CR>"
  " For no inserting <CR> key.
  "return pumvisible() ? neocomplete#close_popup() : "\<CR>"
endfunction
" <TAB>: completion.
inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><C-y>  neocomplete#close_popup()
inoremap <expr><C-e>  neocomplete#cancel_popup()
" Close popup by <Space>.
"inoremap <expr><Space> pumvisible() ? neocomplete#close_popup() : "\<Space>"

" For cursor moving in insert mode(Not recommended)
"inoremap <expr><Left>  neocomplete#close_popup() . "\<Left>"
"inoremap <expr><Right> neocomplete#close_popup() . "\<Right>"
"inoremap <expr><Up>    neocomplete#close_popup() . "\<Up>"
"inoremap <expr><Down>  neocomplete#close_popup() . "\<Down>"
" Or set this.
"let g:neocomplete#enable_cursor_hold_i = 1
" Or set this.
"let g:neocomplete#enable_insert_char_pre = 1

" AutoComplPop like behavior.
"let g:neocomplete#enable_auto_select = 1

" Shell like behavior(not recommended).
"set completeopt+=longest
"let g:neocomplete#enable_auto_select = 1
"let g:neocomplete#disable_auto_complete = 1
"inoremap <expr><TAB>  pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"

" Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

" Enable heavy omni completion.
if !exists('g:neocomplete#sources#omni#input_patterns')
  let g:neocomplete#sources#omni#input_patterns = {}
endif
"let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
"let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
"let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'

" For perlomni.vim setting.
" https://github.com/c9s/perlomni.vim
let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::'


"-----------------------------------------------------------------------------------
" Settings for ctrlpvim/ctrlp.vim
"-----------------------------------------------------------------------------------
let g:ctrlp_map = '<leader>p'
let g:ctrlp_cmd = 'CtrlP'
map <leader>f :CtrlPMRU<CR>
let g:ctrlp_custom_ignore = {
    \ 'dir':  '\v[\/]\.(git|hg|svn|rvm)$',
    \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$',
    \ }
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1



"-----------------------------------------------------------------------------------
" Settings for Vim-Rainbow
"-----------------------------------------------------------------------------------
let g:rainbow_conf = {
\   'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],
\   'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
\   'operators': '_,\|+\|-_',
\   'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\   'separately': {
\       '*': {},
\       'tex': {
\           'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],
\       },
\       'css': 0,
\   }
\}


"-----------------------------------------------------------------------------------
" End
"-----------------------------------------------------------------------------------

 

 

 

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值