先放上已打造好、可直接使用的VIM-IDE包,懒得一步一步操作配置的可直接下载解压后使用。

Ubuntu 64位免安装版VIM-IDE。 压缩包为直接打包/etc/vim配置及插件包

https://download.csdn.net/download/qq_25145163/20550802

window 32位 VIM-IDE

基于win32版本vim82搭建IDE,解压文件到自定义目录下即可,并设置系统环境变量VIM 值为该目录

https://download.csdn.net/download/qq_25145163/20552884

接下来,转入正题,下面将详细介绍操作步骤:

前期准备

需要安装git、cscope工具,可通过apt-get 自行安装

apt-get install cscope git

安装插件管理工具Vundle(必备)

git clone https://github.com/VundleVim/Vundle.vim.git  /etc/vim/bundle/Vundle.vim

虽然仅占用空间 1.4M, 但从github.com 上clone速度会稍慢点,因此不要着急

配置插件

在/etc/vim下找到vimrc,在文件最后加入以下内容,用来支持插件的配置文件 /etc/vim/vimrc.Vundle

 set fileencodings=utf-8,gbk,gb2312,gb18030set fileencoding=utf8set encoding=utf8set nuif filereadable("/etc/vim/vimrc.Vundle")source /etc/vim/vimrc.Vundleendif

具体的配置文件如下,相关配置的介绍资料有很多,此处不再赘述,该文件中已包含大部分常用的插件的配置。

"
" ==============vim基本配置==============
set guifont=Monospace\ 14
set nu            " 显示行号
syntax enable
syntax on
colorscheme desertset path+="/usr/include,../include"
set autowrite   " 自动保存
set autoindent  "自动对齐
set foldmethod=syntax
set foldlevel=100  " 启动vim时不要自动折叠代码
set textwidth=80
set formatoptions+=t
set cindent    "使用 C/C++ 语言的自动缩进方式
set smartindent     "智能对齐
set noerrorbells
set showmatch    "高亮显示对应的括号
set nobackup
set noswapfile"set cursorline  "突出显示当前行
set incsearch  "搜素高亮,搜索逐渐高亮
set hlsearch  "高亮度搜寻
" disable
"noremap <Up> <Nop>
"noremap <Down> <Nop>
"noremap <Left> <Nop>
"noremap <Right> <Nop>" remap control + arrow key to select windows
noremap <C-Down>  <C-W>j
noremap <C-Up>    <C-W>k
noremap <C-Left>  <C-W>h
noremap <C-Right> <C-W>l
noremap <C-J> <C-W>j
noremap <C-K> <C-W>k
noremap <C-H> <C-W>h
noremap <C-L> <C-W>l" ==============Vundle插件管理==============
" Vundle manage
set nocompatible              " be iMproved, required
filetype off                  " required" set the runtime path to include Vundle and initialize
set rtp+=$VIM/vimfiles/bundle/Vundle.vim
call vundle#rc('$VIM/vimfiles/bundle/')
call vundle#begin()" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe' "代码补齐
Plugin 'SirVer/ultisnips'  "代码块补全
Plugin 'honza/vim-snippets'
Plugin 'ervandew/supertab' "解决多个插件共用TAB键问题
Plugin 'scrooloose/nerdtree' "目录树
Plugin 'Xuyuanp/nerdtree-git-plugin'
Plugin 'jistr/vim-nerdtree-tabs'
"Plugin 'majutsushi/tagbar' " Tag bar
Plugin 'vim-airline/vim-airline' | Plugin 'vim-airline/vim-airline-themes' " Status line"
Plugin 'Lokaltog/vim-powerline'
Plugin 'jiangmiao/auto-pairs'  "自动成对操作括号
Plugin 'mbbill/undotree'   "撤销修改
Plugin 'gdbmgr'   "调试器插件
Plugin 'scrooloose/nerdcommenter'  "快速注释/反注释插件
Plugin 'Yggdroot/indentLine' "对齐线
Plugin 'bling/vim-bufferline' " Buffer line
Plugin 'kepbod/quick-scope' " Quick scope
Plugin 'yianwillis/vimcdoc' "vim中文帮助文档
Plugin 'nelstrom/vim-visual-star-search'
Plugin 'ludovicchabant/vim-gutentags'
Plugin 'w0rp/ale'
Plugin 'mbbill/echofunc'  "自动显示函数声明插件
Plugin 'Yggdroot/LeaderF', { 'do': './install.sh' } "文件、buffers、mrus(most recently used)、tags 的检索
"All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required" ===========supertab============
" 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>'
let g:SuperTabRetainCompletionType=2
" better key bindings for UltiSnipsExpandTrigger
"let g:UltiSnipsExpandTrigger="<c-e>"
"let g:UltiSnipsJumpForwardTrigger="<c-j>"
"let g:UltiSnipsJumpBackwardTrigger="<c-k>"
" ==============YCM==============
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='$VIM/vimfiles/.ycm_extra_conf.py'
" 停止提示是否载入本地ycm_extra_conf文件
let g:ycm_confirm_extra_conf = 0
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax = 1
" 开启 YCM 基于标签引擎
let g:ycm_collect_identifiers_from_tags_files = 1
" 从第2个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=2
" 在注释输入中也能补全
let g:ycm_complete_in_comments = 1
" 在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
" 注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1" YCM 查找定义
let mapleader=','
nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>
nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
let g:ycm_collect_identifiers_from_tags_files = 1set completeopt=menu,menuone
let g:ycm_add_preview_to_completeopt = 0  " 关闭函数原型提示let g:ycm_show_diagnostics_ui = 0 " 关闭诊断信息
let g:ycm_server_log_level = 'info'
let g:ycm_min_num_identifier_candidate_chars = 2  " 两个字符触发 补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 收集
let g:ycm_complete_in_strings=1noremap <c-z> <NOP>
let g:ycm_key_invoke_completion = '<c-z>'   " YCM 里触发语义补全有一个快捷键
let g:ycm_max_num_candidates = 15  " 候选数量let g:ycm_semantic_triggers =  {\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],\ 'cs,lua,javascript': ['re!\w{2}'],\ }"==========设置代码块补全==========
let g:UltiSnipsExpandTrigger="<tab>" "被代码补齐占用
"let g:UltiSnipsExpandTrigger="<c-z>"
let g:UltiSnipsJumpForwardTrigger="<c-h>"
let g:UltiSnipsJumpBackwardTrigger="<c-l>"" ===========gutentags=============
"let g:gutentags_enabled='0'
"let g:gutentags_trace = '1'
" 搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project', '.gitignore']" 添加ctags额外参数,会让tags文件变大
" let g:gutentags_ctags_extra_args = ['--fields=+niazlS', '--extra=+q']let g:gutentags_ctags_extra_args = ['--fields=+lS']let g:gutentags_ctags_extra_args += ['--languages=c,c++']
" let g:gutentags_ctags_extra_args += ['--c-kinds=+px']"let g:gutentags_cache_dir = expand('~/.cache/tags')
"let g:gutentags_ctags_tagfile=".tags"if isdirectory("kernel/") && isdirectory("mm/")let g:gutentags_file_list_command = 'find arch/arm/ mm/ kernel/ include/ init/ lib/ drivers/'
endif" =======echodoc 显示函数参数===========
"let g:EchoFuncShowOnStatus = 0
"ctags -R --fields=+lS ."======= NerdTree=========
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
let NERDTreeWinSize=30
"显示行号
let NERDTreeShowLineNumbers=1
let NERDTreeAutoCenter=1
"使用书签功能
let NERDTreeShowBookmarks=1let g:winManagerWindowLayout='TagList'
nmap wm :WMToggle<cr>
"设置F3触发
map <F3> :NERDTreeToggle<CR>
"自动关闭树形目录
let NERDTreeQuitOnOpen = 1
"高亮当前行
let NERDTreeHighlightCursorline = 1"是否显示隐藏文件
let g:NERDTreeShowHidden = 0"忽略特定文件和目录
let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.py\$class$', '\.obj$',\ '\.o$', '\.so$', '\.egg$', '^\.git$', '__pycache__', '\.DS_Store' ]"======nerdtree-git-plugin===
let g:NERDTreeIndicatorMapCustom = {\ "Modified"  : "✹",\ "Staged"    : "✚",\ "Untracked" : "✭",\ "Renamed"   : "➜",\ "Unmerged"  : "═",\ "Deleted"   : "✖",\ "Dirty"     : "✗",\ "Clean"     : "✔︎",\ "Unknown"   : "?"\ }"--------------------------------------------------------------------------------
"  自动加载ctags: ctags -R
if filereadable("tags")set tags=tags
endif
"if filereadable(".tags")
"      set tags=.tags
"endif"--------------------------------------------------------------------------------
" cscope:建立数据库:cscope -Rbq;  F5 查找c符号; F6 查找字符串;   F7 查找函数定义; F8 查找函数谁调用了,
"--------------------------------------------------------------------------------
if has("cscope")set csprg=/usr/bin/cscopeset csto=1set cstset nocsverb" add any database in current directoryif filereadable("cscope.out")cs add cscope.outendifset csverb
endif:set cscopequickfix=s-,c-,d-,i-,t-,e-nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>"nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
"F5 查找c符号; F6 查找字符串;   F7 查找函数定义; F8 查找函数谁调用了,
nmap <silent> <F5> :cs find s <C-R>=expand("<cword>")<CR><CR> :botright copen<CR><CR>
nmap <silent> <F6> :cs find t <C-R>=expand("<cword>")<CR><CR> :botright copen<CR><CR>
"nmap <silent> <F7> :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <silent> <F7> :cs find c <C-R>=expand("<cword>")<CR><CR> :botright copen<CR><CR>"--------------------------------------------------------------------------------
" global:建立数据库
"--------------------------------------------------------------------------------
if filereadable("GTAGS")set cscopetagset cscopeprg=gtags-cscopecs add GTAGSau BufWritePost *.c,*.cpp,*.h silent! !global -u &
endif" ======ALE静态语法检测========
let g:ale_sign_column_always = 1
let g:ale_sign_error = '✗'
let g:ale_sign_warning = 'w'
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
let g:ale_echo_msg_format = '[%linter%] %code: %%s'
let g:ale_lint_on_text_changed = 'normal'
let g:ale_lint_on_insert_leave = 1
"let g:airline#extensions#ale#enabled = 1
let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
let g:ale_c_cppcheck_options = ''
let g:ale_cpp_cppcheck_options = ''
"增加使用make -n 来更好的解决误报错问题(误报头文件等)
let g:ale_c_parse_makefile=1"普通模式下,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>" ========airline状态栏=========
let g:airline_section_b = '%-0.10{getcwd()}'
let g:airline_section_c = '%t'
let g:airline#extensions#tagbar#enabled = 1
let g:airline_section_y = ''
set t_Co=256  "在windows中用xshell连接打开vim可以显示色彩
"set nocompatible   " Disable vi-compatibility
" 总是显示状态栏
set laststatus=2   " Always show the statusline
"set encoding=utf-8 " Necessary to show Unicode glyphs
"解决consle输出乱码
"set termencoding = cp936
"设置中文提示
language messages zh_CN.utf-8
"设置中文帮助
set helplang=cn
" 设置为双字宽显示,否则无法完整显示如:☆
set ambiwidth=double
let g:airline_powerline_fonts = 1   " 使用powerline打过补丁的字体
let g:Powerline_symbols= 'unicode'
let g:airline_theme="dark"      " 设置主题
"let g:airline_theme="luna"
"let g:airline_theme='bubblegum'
"打开tabline功能,方便查看Buffer和切换,这个功能比较不错"
"我还省去了minibufexpl插件,因为我习惯在1个Tab下用多个buffer"
let g:airline#extensions#tabline#enabled = 1
"tabline中当前buffer两端的分隔字符
let g:airline#extensions#tabline#left_sep = '┇'
"tabline中未激活buffer两端的分隔字符
let g:airline#extensions#tabline#left_alt_sep = '|'
"tabline中buffer显示编号
let g:airline#extensions#tabline#buffer_nr_show = 1
"let g:airline#extensions#tabline#buffer_nr_format = "[%s]"if !exists('g:airline_symbols')let g:airline_symbols = {}
endif" unicode symbols
let g:airline_left_sep = '▶ '
let g:airline_right_sep = '◀ '
let g:airline_symbols.crypt = '												

手把手教你打造一个VIM-IDE相关推荐

  1. css加号图标_手把手教你打造一个纯CSS图标库

    来,干了这碗安利 写这篇文章的目的其实就是为了安利一下我的图标库: 主题说完了,下面进入正题. 在web开发中,我们经常要用到一些小图标(加减勾叉等).通常做法就两种: 直接使用图片: 使用css/s ...

  2. 手把手教你打造一个企业级实时数据中台【万字图文】

    引言--首先来聊聊现代企业数据架构及痛点: 数据孤岛:低效率和利用困难的根源 应用瓶颈:传统方案数据仓库.数据湖的不足   单讲这两个问题你可能会疑惑--为什么会出现这样的问题?   所以下面来讲讲两 ...

  3. 手把手教你打造一个可视化接口自动化测试系统

    现如今,接口开发几乎成为一个互联网公司的标配了,无论是web还是app,哪怕是小程序,都离不开接口作为支撑,当然,这里的接口范围很广,从http到websocket,再到rpc,只要能实现数据通信的都 ...

  4. 手把手教你打造一个排队叫号系统

    点击上方"业余草",选择"置顶公众号" 第一时间获取技术干货和业界资讯! 排队叫号系统在生活中处处可见,但是就这么一个系统,让你写你还不一定能完整的实现出来. ...

  5. android 自定义心电图,手把手教你打造一个心电图效果View Android自定义View

    大家好,看我像不像蘑菇-因为我在学校呆的发霉了. 思而不学则殆 丽丽说得对,我有奇怪的疑问,大都是思而不学造成的,在我书读不够的情况下想太多,大多等于白想 ,所以革命没成功,同志仍需努力. 好了废话不 ...

  6. android 自定义心电图,手把手教你打造一个心电图效果View Android自定义View(示例代码)...

    大家好,看我像不像蘑菇-因为我在学校呆的发霉了. 思而不学则殆 丽丽说得对,我有奇怪的疑问,大都是思而不学造成的,在我书读不够的情况下想太多,大多等于白想 ,所以革命没成功,同志仍需努力. 好了废话不 ...

  7. PS教程!手把手教你打造一个配色小清新的地图图标

    @P大点S微博 :今天的教程是一个小清新风格的定位图标,操作不复杂,重点是图标样式的应用.源文件已打包,来收! PSD源文件  打包下载:http://pan.baidu.com/s/1qWYXqlm ...

  8. 第五十八期:从0到1 手把手教你建一个区块链

    近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构建一个自己的区块链. 作者:Captain编译 近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构 ...

  9. websockert后台定时向前端发送状态_(文末送书)手把手教你打造属于自己团队的前端小报系统...

    本文首发于政采云前端团队博客:手把手教你打造属于自己团队的前端小报系统 https://www.zoo.team/article/building-a-tabloid-system 前言 经常关注我们 ...

最新文章

  1. Java String.split()用法小结
  2. 大数据驱动的运营创新和探索
  3. 发光二极管pcb封装图画法_五个方面剖析SIP封装工艺,看懂SIP封装真正用途
  4. List of salaries for Silicon Valley intern
  5. C/C++ 进阶 —— 指向指针的指针
  6. python如何画出多个独立的图片_python使用matplotlib:subplot绘制多个子图的示例
  7. effective C++ 条款 44:将与参数无关的代码抽离templates
  8. Atitit api与安全措施法 目录 1.1. 模板替换 sprintf %f %d 数字小数字段格式化转换校验法 1 2.  $pdo-exec 与query 2 2.1. 数字校
  9. docker20.10.7及以下版本安装registry镜像库指引
  10. 走楼梯c语言程序,动态规划走楼梯
  11. 计算机启动太慢的原因是,电脑启动慢的原因分析
  12. 高性价比WIFI图传方案快速入门教程
  13. python学习--mysql
  14. php 7.0 nts 安装,Windows phpstudy 7.0.12 nts 安装redis
  15. 以太坊源码阅读3——MPT原理
  16. [灯哥开源—四足机器人]程序算法讲解与STM32移植——PA_TROT和PA_WALK讲解和trot步态,walk步态,步态规划
  17. 企业联合体的形式_企业战略联盟的形式有哪些
  18. Mac截图工具snipaste如何设置主题颜色?
  19. Appium报错cannot be proxied to UiAutomator2 server because the instrumentation process is not running
  20. 教你用python编一个小鸟管道( flappybird)

热门文章

  1. PDF如何在线翻译?PDF在线翻译的方法
  2. 和平精英2023年五月和平小店返场皮肤有哪些
  3. Linux系统的定时任务
  4. html中图片上下左右留白,vertical-align垂直居中( 消除html中图片下边缘留白 )
  5. java工程师项目经验_最新JAVA工程师个人简历中的项目经验范文.doc
  6. Chris Hadfield現身《ABS 2020》,各方菁英和THORBOT 雷神量化機器人一同進行深入探討
  7. 联通光猫nat -虚拟服务器,科学折腾 篇一:长春联通光猫改软路由拨号
  8. 3D标签云效果的实现
  9. 迪赛智慧数——柱状图(象形柱图):水果VC含量排行榜
  10. 这份苹果手机应用历史总排行榜很有意思!