一、Vundle

这是一个vim的插件管理器,可以增强vim的功能。

1、安装

默认的是安装在/.vim/bundle/vundle下

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

2、配置~/.vimrc文件

"~"即为为用户主目录,可将以下内容直接保存为.vimrc文件,再覆盖~/.vimrc文件。

"配置ycm,taglist,Synstics,The-Nerd-Tree完成之后
"vim下可以使用的快捷键有
"<F2> 目录树,nerd-tree为最后一个窗口,不关闭vim
"<F3> taglist,taglist为最后一个窗口,则关闭vim
"
"**********************************************************
"                      一般性配置
"**********************************************************
"关闭vim一致性原则
set nocompatible
"显示行号
set nu
"设置在编辑过程中右下角显示光标的行列信息
set ruler
"设置历史记录条数
set history=1000
"设置c/c++方式自动对齐
set autoindent
set cindent
"开启语法高亮功能
syntax on
"设置自动对齐空格数
set shiftwidth=4
"设置搜索时忽略大小写
set ignorecase
"选中高亮
set hls
"搜索高亮
set hlsearch
"实时匹配搜索结果
set incsearch
"设置tabstop宽度
set ts=4
"指定配色方案为256色
set t_Co=256
"设置在vim中可以使用鼠标
set mouse=a
"设置当文件被改动时自动载入
set autoread
"检测文件类型
filetype on
"针对不同文件采用不同的缩进方式
"filetype indent on
"允许插件
filetype plugin on
"启用智能补全
"filetype plugin indent on"highlight Function cterm=bold,underline ctermbg=red ctermfg=green
"highlight TabLine term=underline cterm=bold ctermfg=9 ctermbg=4
"highlight TabLineSel term=bold cterm=bold ctermbg=Red ctermfg=yellow
"highlight Pmenu ctermbg=darkred
"highlight PmenuSel ctermbg=red ctermfg=yellow
colorscheme desert
"let g:winManagerWindowLayout='FileExplorer|TagList|BufExplorer'
"let g:winManagerWidth=35"*****************************************************************
"                          vundle配置
"*****************************************************************
"设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()"让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在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'}"我添加的插件
Plugin 'Valloric/YouCompleteMe'
Plugin 'taglist.vim'
Plugin 'The-NERD-tree'
Plugin 'Syntastic'
Plugin 'Lokaltog/vim-powerline'" 你的所有插件需要在下面这行之前
call vundle#end()            " 必须
filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
"
" 常用的命令
" :PluginList       - 列出所有已配置的插件
" :PluginInstall     - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
" :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
" :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
" 查阅 :h vundle 获取更多细节和wiki以及FAQ"*****************************************************************
"                          YCM配置
"*****************************************************************
" YouCompleteMe
set completeopt=longest,menu   "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
autocmd InsertLeave * if pumvisible() == 0|pclose|endif   "离开插入模式后自动关闭预览窗口
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"    "回车即选中当前项
"上下左右键的行为 会显示其他信息
inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp>   pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>""youcompleteme  默认tab  s-tab 和自动补全冲突
"let g:ycm_key_list_select_completion=['<c-n>']
let g:ycm_key_list_select_completion = ['<Down>']
"let g:ycm_key_list_previous_completion=['<c-p>']
let g:ycm_key_list_previous_completion = ['<Up>']
let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示let g:ycm_collect_identifiers_from_tags_files=1  " 开启 YCM 基于标签引擎
let g:ycm_min_num_of_chars_for_completion=2    " 从第2个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0 " 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1   " 语法关键字补全
"nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>  "force recomile with syntastic
"nnoremap <leader>lo :lopen<CR>    "open locationlist
"nnoremap <leader>lc :lclose<CR>   "close locationlist
inoremap <leader><leader> <C-x><C-o>
"在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
"注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_show_diagnostics_ui = 0                           " 禁用语法检查
"leader映射为逗号","
"let mapleader = ","
"g:ycm_global_ycm_extra_conf 定义了全局配置文件,当YCM搜索不到配置文件时
"YCM将导入全局配置文件
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'"********************************************************
"                      Syntastic 配置
"********************************************************
"打开文件时自动进行检查
let g:syntastic_check_on_open = 1
let g:syntastic_cpp_include_dirs = ['/usr/include/']
let g:syntastic_cpp_remove_include_errors = 1
let g:syntastic_cpp_check_header = 1
"让syntastic支持c++11
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = '-std=c++11 -stdlib=libstdc++'
"set error or warning signs
let g:syntastic_error_symbol = '✗'
let g:syntastic_warning_symbol = '⚠'
"whether to show balloons
let g:syntastic_enable_balloons = 1"*****************************************************************
"                          taglist配置
"*****************************************************************
"不显示 "press F1 to disply help"
"let Tlist_Compact_Format = 1
"窗口在右侧显示
"let Tlist_Use_Right_Window = 1
"只显示当前文件的tags
let Tlist_Show_One_File = 1
"当同时显示多个文件的tag时,使taglist只显示当前文件tag,其它文件的tag都被折"
"叠起来
"let Tlist_File_Fold_Auto_Close = 1
"使taglist以tag名字进行排序
let Tlist_Sort_Type = "name"
"高亮显示
let Tlist_Auto_Highlight_tag = 1
"随文件自动更新
let Tlist_Auto_Updata = 1
"自动打开taglist窗口
"let Tlist_Auto_Open = 1
"设置宽度
let Tlist_WinWidth = 30
"设置高度
"let Tlist_WinHeight = 100
"taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow = 1
"单击跳转
let Tlist_Use_SingClick = 1
"设置ctags命令的位置
"let Tlist_Ctags_Cmd = "/usr/bin/ctags"
"打开关闭taglist窗口快捷键
nnoremap <silent><F3> :TlistToggle<CR>
"在使用:TlistToggle打开taglist窗口时,光标在taglist窗口
let Tlist_GainFocus_On_ToggleOpen = 1"********************************************************
"                      NERD_Tree 配置
"********************************************************
"显示增强
let NERDChristmasTree=1
"自动调整焦点
let NERDTreeAutoCenter=1
"鼠标模式:目录单击,文件双击
let NERDTreeMouseMode=2
"打开文件后自动关闭
"let NERDTreeQuitOnOpen=0
"显示文件
let NERDTreeShowFiles=1
"显示隐藏文件
let NERDTreeShowHidden=1
"高亮显示当前文件或目录
let NERDTreeHightCursorline=1
"显示行号
"let NERDTreeShowLineNumbers=1
"窗口位置
let NERDTreeWinPos='left'
"窗口宽度
let NERDTreeWinSize=31
"不显示'Bookmarks' label 'Press ? for help'
"let NERDTreeMinimalUI=1
"快捷键
nnoremap <silent> <F2> :NERDTreeToggle<CR>
"当打开vim且没有文件时自动打开NERDTree
autocmd vimenter * if !argc() | NERDTree | endif
"只剩 NERDTree时自动关闭
"autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif"********************************************************
"                      c,c++ 按<F5>编译运行
"********************************************************
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()exec "w"if &filetype == 'c'exec "!gcc % -o %<"exec "! ./%<"elseif &filetype == 'cpp'exec "!g++ % -o %<"exec "! ./%<"elseif &filetype == 'java'exec "!javac %"exec "!java %<"elseif &filetype == 'sh':!./%<endif
endfunc"********************************************************
"                      c,c++ 按<F8>调试
"********************************************************
map <F8> :call Rungdb()<CR>
func! Rungdb()exec "w"exec "!gcc % -g -o %<"exec "!gdb ./%<"
endfunc"********************************************************
"                      键盘命令
"********************************************************
"映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY"********************************************************
"                      新文件标题
"********************************************************
"新建.c,.h,.sh,自动插入文件头
autocmd BufNewFile *.[ch],*.cpp,*.sh exec ":call SetTitle()"
func SetTitle()if &filetype == 'sh'call setline(1,"\#!/bin/bash")call append(line("."), "")elsecall setline(1,"/**********************************************")call append(line("."),   "  > File Name       : ".expand("%"))call append(line(".")+1, "  > Author          : dasg")call append(line(".")+2, "  > Mail          : xxx@xxx.com")call append(line(".")+3, "  > Created Time  : ".strftime("%c"))call append(line(".")+4, " ****************************************/")call append(line(".")+5, "")endifif expand("%:e") == 'cpp'call append(line(".")+6, "#include <iostream>")call append(line(".")+7, "using namespace std;")   call append(line(".")+8, "")endifif &filetype == 'c'call append(line(".")+6, "#include <stdio.h>")call append(line(".")+7, "")endifif expand("%:e") == 'h'call append(line(".")+6, "#ifndef _".toupper(expand("%:r"))."_H")call append(line(".")+7, "#define _".toupper(expand("%:r"))."_H")call append(line(".")+8, "")endif
endfunc
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G"支持中文GB2312编码
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936

3、进入vim安装插件

$ vim

不用管报错(没有监测到配置文件中配置的插件),Enter继续。输入

:PluginInstall

安装插件,由于是在线安装,必须保证电脑能正常上网。
下载安装YouCompleteMe插件的时间会比较长(取决于网速,我安装用了45分钟)。
下载完成后,使用vim打开文件时,F2快捷键打开目录树,F3打开taglist。

4、如果想移除不需要的插件

1.编辑.vimrc文件,移除你要移除的插件所对应的Plugin那一行
2.保存退出
3.重新打开vim,输入命令BundleClean

5、其它常用命令

1.更新插件 BundleUpdate
2.列出所有插件 BundleList
3.查找插件 BundleSearch

二、YouCompleteMe

https://github.com/Valloric/YouCompleteMe#full-installation-guide
这是一个自动补全插件,非常好用。在Vundle安装YouCompleteMe之后,还不能正常使用,还需要以下步骤。

1、下载必要的软件包

$ sudo apt-get install build-essential cmake3
$ sudo apt-get install python-dev python3-dev

2、安装clang

$ cd ~/.vim/bundle/YouCompleteMe
$ ./install.py --clang-completer

时间较长,视网速而定。
注意:如果后期在Vundle中更新了YouCompleteMe,需要重新执行安装clang的步骤,才能正常使用。

3、 复制一个配置文件模板到用户主目录下

$ cp third_party/ycmd/examples/.ycm_extra_conf.py ~/
$ cd ~/
$ vim .ycm_extra_conf.py

~/.vimrc已经将默认的全局配置文件设置为了~/.ycm_extra_conf.py,这个全局配置将在vim打开的工程目录找不到.ycm_extra_conf.py时,生效。一般建议在各个工程下面放一个配置文件,效果更好。要支持c,一般的修改为:

'-std=gunc99',
'-x',
'c',
'-isystem',
'/usr/include/',
'-isystem',
'/home/chunli/work/01_第三方共享库头文件路径/',
'-isystem',
'/home/chunli/work/01_chunli/08_本项目头文件路径/',

三、安装vim8.0

YCM插件需要的vim版本至少是7.4.1578,Ubuntu14的软件源提供的是7.4.52,可以选择下载vim源码编译安装,https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source。
这里提供一种比较简单的方法:

1、安装

$ sudo add-apt-repository ppa:jonathonf/vim
$ sudo apt-get update
$ sudo apt-get install vim
$ vim --version

2、如果卸载的话

$ sudo apt remove vim
$ sudo add-apt-repository --remove ppa:jonathonf/vim

四、taglist的使用

1、需要先安装exuberant-ctags。

$ sudo apt-get install exuberant-ctags

2、建立标签文件

在自己的项目文件夹下执行如下命令 。

 $ ctags -R *

注:“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件, 当用户在当前目录中运行vi时,会自动载入此tags文件。
然后就可以入手了。

3、使用

熟练的使用ctags仅需记住下面七条命令:
1.

$ ctags –R *

2.把tag替换为您欲查找的变量或函数名

$ vi –t tag

3.ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令。:ts命令显示的tag列表,是上一次被检索过的tag。

:ts

4.tp助记字:tags preview

:tp

5.tn助记字:tags next

:tn

6. Ctrl + ] (光标处于要查找的函数处,进入)
7. Ctrl + T 或 Ctrl + O (原路后退)

详细举例如下:
“vi–t tag”:在运行vim的时候加上“−t”参数,例如:[/usr/src] vim -t main
这个命令将打开定义“main”(变量或函数或其它)的文件,并把光标定位到这一行。如果这个变量或函数有多处定义,在VI命令行模式“:ts”命令就能 列出一个列表供用户选择。 “:tp”为上一个tag标记文件,“:tn”为下一个tag标记文件。当然,若当前tags文件中用户所查找的变量或函数名只有一 个,“:tp,:tn”命令不可用。
最方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl+]”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。用 “Ctrl+t”或“Ctrl+o”可以退回原来的地方。即使用户使用了N次“Ctrl+]”查找了N个变量,按N次“Ctrl+t”也能回到最初打开的文件,它会按原路返回 。

4、注意

运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:settags=”命令设定“tags”文件的路 径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件。

安装Vundle和YouCompleteMe相关推荐

  1. Mac下安装Vundle管理YouCompleteMe插件

    vim按键说明 除了上面简易范例的 i, o,a,Esc, :wq 之外,其实 vim 还有非常多的按键可以使用 这些基本命令需要我们在使用过程中不断的总结,这样才会融会贯通.附上一张vim的键盘图, ...

  2. ubuntu 16.04 安装Vundle和YouCompleteMe实现C/C++的代码提示和补全功能

    Vundle是一个插件管理工具,它可以在 .vimrc 中跟踪.管理和自动更新插件.接下来的操作会用到 git 工具,如果没有安装过 git 使用命令sudo apt-get install git安 ...

  3. Fedora 27安装vim插件YouCompleteMe

    YouCompleteMe是一款强大的Vim插件,它可以实现代码的自动补全,跳转到定义等功能,并且支持java, python, go, c家族等多种语言. 网址: https://github.co ...

  4. windows下安装vundle

    windows下安装vundle ## 前言 windows下安装vundle和linux下稍微有些不一样,虽然官网给出了 安装说明,但是有些问题的. E117: Unknown function: ...

  5. 【亲测有用,详解】 Windows系统 Vim 安装 Vundle之后,出现 E492:PluginInstall 不是编辑器命令的解决方法,

    Windows系统 Vim 安装 Vundle之后,出现 E492:PluginInstall 不是编辑器命令的解决方法 文章目录 Windows系统 Vim 安装 Vundle之后,出现 E492: ...

  6. Windows环境下 Gvim 安装 Vundle/Ctags/taglist

    目录 一.安装Vundle for Windows 1.安装Git 2.安装Curl 3.安装Vundle 二.ctags下载与安装 1.生成Tag文件 2.代码的快速浏览 三.Taglist下载和安 ...

  7. win10下gVim安装Vundle

    gVim安装Vundle 2019/9/13 01:52 先进入Vundle的GitHub主页:https://github.com/VundleVim/Vundle.vim#quick-start ...

  8. Ubuntu20.04 使用Vundle安装Vim插件YouCompleteMe

    先安装好Vundle vi ~/.vimrc文件代码 set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vund ...

  9. vim 安装_vim实战:插件安装(Vundle,NerdTree)

    一:插件管理器Vundle 1.简介 Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件.插件管理器用于方便.快速的安装.删除.Vim更新插件.vim Vundle插件官方地址:h ...

最新文章

  1. Android检查是否自启动,android – 如何检查我的应用程序是否是默认启动器
  2. 三菱socket通信实例_三菱自动化产品相关知识整理汇总
  3. 在anaconda下创建我的第一个scrapy爬虫——爬取dmoz网站某一网址下的目录的链接名称以及链接地址...
  4. php大量数据库抽象,数据库的数据抽象有几个级别
  5. C# WinForm 中嵌入另一个.EXE程序(给程序加锁)
  6. 强化学习--蒙特卡洛法
  7. video全局事件属性
  8. 科普:手机电池的保护电路
  9. 区块链开发零基础必备技能之GO语言从入门到高级
  10. 使用canvas绘制海报
  11. List remove的三种正确方法
  12. Docker 核心技术(2)- helloworld 镜像
  13. 定陶创维科技-自己创业的经历(1)
  14. 2.1 Git介绍、安装与使用
  15. 三星Odin刷机文件及相关名称解析。
  16. wps两列数据分别作为xy轴_面对三维数据很慌张?气泡图了解一下
  17. 12.9 Daily Scrum
  18. 计算机网络安全等级可以划分为几级,网络安全级别划分为几个等级?
  19. 如何正确的从UI图中取色
  20. LeetCode基本记录【5】// BASIC NOTES AND CODES OF LEETCODE [ 5 ]

热门文章

  1. 05 数据分析 - 诊断性分析方法
  2. 山东大学软件学院创新实训——飞讯(八)
  3. 数字前端后端的区别、以及流程简介
  4. 系统还原点的创建与还原
  5. 行人检测特征提取_HOG和adaboost检测行人检测
  6. 云计算学习笔记——第一章 云计算介绍
  7. 金蝶EAS,设置界面大小、窗口标题、按钮可用
  8. 海信平板出现绿屏_您是否知道Windows 10出现绿屏死机?
  9. centos7 yum 配置阿里云源
  10. Python 面试题 大纲