vim syntastic 配置安装问题 安装完后 编辑c++文件为什么没有错误语法信息

vim中syntastic插件为什么对java语法检查不管用_百度知道
vim中syntastic插件为什么对java语法检查不管用
提问者采纳
Systastic还需要用到这个环境变量。。 之前在一本书中看到JDK1.5以后不必设置CLASSPATH变量, 没有设置 CLASSPATH 环境变量Sysntastic不起作用的原因是。
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
Vim作为一个强大的编辑器,再配合强大的插件,就可以称得上为编辑神器了。
pathogen为管理插件的插件,类似的还有vundle。在 Pathogen 之前,安装插件就是把插件文件放在.vim目录下,所有的插件都混在一起,不便于管理。
通过pathogen,可以将不同的插件放到不同的目录里,比如:
tree .vim/bundle -L 2
.vim/bundle
├── SingleCompile
│ ├── COPYING
│ ├── README.rst
│ ├── autoload
│ ├── doc
│ ├── mkzip.sh
│ └── plugin
这样,各个插件之间的文件都独立于自己的目录。以后安装插件时只需要将插件clone到bundle下相应的目录即可,重新打开vim用:Helptags生成帮助文档。删除一个插件,只要直接删除这个插件的目录。
pathogen的安装十分简单,只需要将pathogen clone到.vim/bundle/vim-pathogen目录,然后在配置文件加下面内容即可:
runtime bundle/vim-pathogen/autoload/pathogen.vim execute pathogen#infect()
或者可以将pathogen放在其他地方,然后在.vimrc加上如下内容:
source ~/src/vim/bundle/vim-pathogen/autoload/pathogen.vim
execute pathogen#infect()
Nerdtree用来浏览文件系统并打开文件或目录。
nerdtree提供如下功能及特性:
以继承树的形式显示文件和目录
对如下类型的文件进行不同的高亮显:文件、目录、sym-links、快捷方式、只读文件、可执行文件。
提供许多映射来控制树状结构
对树状结构内容的过滤(可在运行时切换),如自定义文件过滤器阻止某些文件(比如vim备份文件等)的显示、可选是否显示隐藏文件、可选不显示文件只显示目录
可以自定义Nerd窗口的位置和大小,自定义结点排序方式
可以将文件和目录添加到收藏夹,可以用书签标记某些文件或者目录
具体见下图:
可以在NERDTree栏用?呼出快速帮助文档,或者用:h NERDTree查看详细文档。
编码中难免会有许多重复的代码片段,每次键入这些片段明显是不明智的做法,于是就有大牛写了插件,不过还有一个更加强大的插件:xptemplate。
安装完成后:Helptags生成帮助文档,然后:h xpt查看帮助文档。
要想看当前文件类型支持的代码片段,可以在insert模式下键入&C-r&&C-r&&C-&。insert模式下输入片段的名字,然后&C-&即可插入代码,然后可以用TAB、Shift Tab前后更改高亮显示的内容。
如下图所示:
如果输入不完整的代码片段名字,键入&C-&之后就会给出所有可能的片段名称。另外可以嵌套使用代码片段名字,例如在C文件中输入switch&C-&,会产生一个switch片段,然后在
switch ( var ) {
case constant :
/* cursor */
然后两次&Tab&跳到cursor位置,然后if&C-&插入if片段,如下:
switch ( var ) {
case constant :
if ( condition ) {
/* cursor */
xpt的补全配置文件类似ftplugin/javascript/javascript.xpt.vim。另外也可以添加自己的代码片段,可以新建ftplugin/_common/personal.xpt.vim文件,写入自己的配置,personal.xpt.vim优先级最高,可以保证自己的配置不被覆盖。
Valloric觉得Vim下的补全插件跟IDE比差太远,补全时间慢,按键繁琐,所以他自己写了一个,他要求补全时间在10ms之内必须出现。于是就有了YouCompleteMe(以下简称YCM)。
YCM是一个比较新Vim代码补全插件,默认为程序语言提供基于标识符的补全。它会收集当前文件、tags文件以及其他访问过的文件中的标识符,当输入时,会自动显示匹配的标识符。YCM不需要TAB即可呼出匹配的标识符,可以一边输入一边参考YCM呼出的菜单。YCM的强大之处还在于,它的匹配并不是前缀匹配,而是子字符串匹配,也就是说如果输入abc,那么标识符中的xaybgc也会匹配,而不只是abc...。
另外YCM也可以基于为C/C++代码提供语义补全。 对C/C++来说youcompleteme现在应该是最好的选择,借助clang的强大功能,补全效率和准确性极高。
YCM使用来加强python的语义补全,只需要git submodule update --init --recursive。另外YCM也支持其他许多语言,比如ruby、java等。
具体使用可以看下图:
YCM需要vim版本至少是7.3.584,可以用:version查看vim版本号,如下:
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Apr 19 :32)
MacOS X (unix) version
Included patches: 1-806
另外需要支持python,:echo has('python')的结果是1.
YCM的安装相对复杂一点,首先用下载插件,用pathogen(或者vundle)进行相应的安装,然后下载clang,放在ycm_temp/llvm_root_dir下:
$ mkdir -p ~/ycm_temp/llvm_root_dir
$ mv ~/Download/clang+llvm/* ~/ycm_temp/llvm_root_dir
$ cd ycm_temp/llvm_root_dir
$ llvm_root_dir
安装cmake和python-dev,然后编译如下:
$ mkdir ycm_build
$ cd ycm_build
$ cmake -G &Unix Makefiles& -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/cpp
$ ycm_core
详细安装说明在有说明,可以参考。
pydiction是一款强大的python自动补全插件,可以实现下面python代码的自动补全:
简单python关键词补全
python 函数补全带括号
python 模块补全
python 模块内函数,变量补全
该插件需要filetype plugin on配置。 输入时TAB即可弹出补全提示,不过需要一个字典文件,比如complete-dict,然后在配置文件中将字典文件路径添加到pydiction_location变量中:
let g:pydiction_location = '~/.vim/bundle/pydiction/complete-dict'
输入时:raw&Tab&然后会跳出类似下面的菜单:
raw_input( raw_unicode_escape_decode( raw_unicode_escape_encode(
要想将某个模块加入字典文件,可以用下面命令:
$ python pydiction.py &module& ... [-v]
-v选项将结果输出到标准输出而不是complete-dict文件,比如要添加requests、BeautifualSoup
python pydiction.py requests bs4
生成的字典部分如下:
--- import requests ---
requests.HTTPError(
requests.PreparedRequest(
requests.Request(
syantastic是一款强大的语法检查插件,支持很多语言的语法与编码风格检查,每次保存文件都会引起这个插件的查错操作。实际上这个插件只是个接口,背后的语法检查是交给各个语言自己的检查器,例如JavaScript使用jshint,python使用flake8等。
可以在syntax_checkers/language文件中查看syntastic需要的外界语法检查器
ls .vim/bundle/syntastic/syntax_checkers
typescript
ls .vim/bundle/syntastic/syntax_checkers/python
flake8.vim
py3kwarn.vim pyflakes.vim pylint.vim
python.vim
外界的语法检测器必须在$PATH中,也可以使用软链接。
syntastic特性:
错误信息被载入location-list,需要:Error命令
当光标处于有错误的行时,在命令窗口显示错误信息
在有错误或警告的行显示 signs
可以在状态栏显示错误信息
当鼠标放置于有错误的行时,在气泡中显示错误信息
用语法高亮显示具体出错部分。
如图所示:
维基语法的作用有三点:
使条目更规范,通过一定转换,wiki 能输出为拥有约定俗成格式的HTML;
节约编辑时间,不用写出完整的HTML标签,也不用在可视化编辑器中点来点去;
充分的可读性,使用维基语法书写的文档,即使未被转为HTML,内容的语义也是一目了然,甚至表格也能清晰地阅读。
VimWiki官方称之a personal wiki for Vim,一个基于Vim的Wiki 系统,是一个非常不错的用于个人知识管理的利器,并且还支持输出到网页。
在Vim的Normal模式下,键入ww三个键,Vim就会打开wiki首页(index.wiki)。输入模式,在单词上面Enter既可以把此单词变为wiki词条,然后在Normal模式Enter wiki词条,既可以进入相应的词条页面进行编辑。
编辑完词条之后进行保存,然后wh(:Vimwiki2HTML)将当前wiki页转换成Html格式,whh转换为html格式然后打开页面。vimwiki转换html时支持模板文件,配合强大的模板文件,可以自己创建css,或者是实现语法高亮,vimwiki还支持MathJax数学公式编辑。
在vimwiki中使用以下占位符,能对生成的HTML文件做一些特殊的处理。
%toc 自动生成的目录
%title 指定HTML文档的title,建议放到文档最末尾。如果不指定,title 就是文件名
%nohtml 告诉 vimwiki 不为某条目生成HTML文件。即使你在该条目打开时为它单独执行 :Vimwiki2HTML ,也不会生成。
vimwiki 有一个g:vimwiki_valid_html_tags值,可以指定允许写在 wiki 中的HTML标签。
Vimwiki的优点:
与Vim紧密结合,可使用Vim的内建的正则表达式规则,高效处理文本
与Vim紧密结合,可利用Vim内建的多种命令,以及可显示多个分页的特性,同时展示多种窗口,快速查看多份资料.
由于Vim是文本处理工具,所以任何笔记,只要存为文本数据,便可以用Vim来组织和整理
内置了特别的语法高亮模式,在观感上与普通见到的wiki没有多大的分别.
但是vimwiki的语法是自创的,和广泛使用的轻量级标记语言markdown等不兼容,因此可移植性比较差。
vim 插件zencoding-vim支持类似的缩写。Zen Coding是一个高效编写HTML, XML, XSL的编辑器插件,支持许多编辑器。
如下内容:
V进入Vim 可视模式,&行选取&上面三行内容,然后按键&c-y&,,这时Vim的命令行会提示Tags:,键入ul&li*,然后Enter。
&li&test1&/li&
&li&test2&/li&
&li&test3&/li&
zencoding 支持的简写规则,类似于CSS选择器(大写的E代表一个HTML标签):
E 代表HTML标签。
E#id 代表id属性。
E.class 代表class属性。
E[attr=foo] 代表某一个特定属性。
E{foo} 代表标签包含的内容是foo。
E&N 代表N是E的子元素。
E+N 代表N是E的同级元素。
E^N 代表N是E的上级元素。
还提供了连写(E*N)和自动编号(E$*N)功能。div[src=span$]#item$.class$$*3展开后为:
&div id=&item1& class=&class01& src=&span1&&&/div&
&div id=&item2& class=&class02& src=&span2&&&/div&
&div id=&item3& class=&class03& src=&span3&&&/div&
另外还有许多强大的功能,如下:
&c-y&d: 插入模式下根据光标位置选中整个标签;
&c-y&D: 插入模式下根据光标位置选中整个标签内容;
&c-y&k: 移除标签对;
&c-y&/: 移动光标到块中, 插入模式中按&c-y&/切换注释;
&c-y&a: 将光标移至 URL, 按&c-y&a,则从 URL 地址生成锚;
查看帮助文档:help zencoding
首先来了解下,ctags为文件中的各种语言对象生成一个索引文件(或称为标签文件,tags)。标签文件允许这些项目能够被一个文本编辑器或其它工具简捷迅速的定位。一个&标签&是指一个语言对象,它对应着一个有效的索引项 (这个索引项为这个对象而创建)。
ctags 能够为多种程序语言文件的语言对象信息生成可读格式的交叉索引列表,并且支持用户用正则表达式自定义语言对象。
对于C/C++,其生成的标记文件tags中包括这些对象的列表:
用#define定义的宏
枚举型变量的值
函数的定义、原型和声明
名字空间(namespace)
类型定义(typedefs)
变量(包括定义和声明)
类(class)、结构(struct)、枚举类型(enum)和联合(union)
类、结构和联合中成员变量或函数
要生成tags十分简单:
c:ctags &R src
c++:ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src
--c++-kinds=+p : 为C++文件增加函数原型的标签
--fields=+iaS : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
--extra=+q : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全
-R : 递归生成src中所有源文件的tags文件
使用tags文件也很简单,把光标移动到某个元素上,CTRL+]就会跳转到对应的定义,CTRL+o可以回退到原来的地方。如果当前光标下是个局部变量,gd跳到这个局部变量的定义处。
tags必须在vim运行的当前目录,才能在vim里面正确跳转,不过也可以使用set tags=&/path/tags&即可。
而vim下的TagBar插件(Taglist的升级版)则是为了方便浏览源文件的标签,TagBar提供了一个侧边栏列出了当前文件所有的标签。如下图:
注意:mac自带的ctags程序不是exuberant ctags, 所以使用时会出现问题,可以用homebrew重新安装ctags,然后做一个软链接即可,具体如下:
$ brew install ctags
$ cd /usr/local/Cellar/ctags/5.8/bin
$ ./ctags --version
Exuberant Ctags 5.8, Copyright (C)
Darren Hiebert
Compiled: Jun 14 :43
Addresses: &dhiebert@users.sourceforge.net&, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex
$ cd /usr/bin
$ sudo ln -s /usr/local/Cellar/ctags/5.8/bin/ctags ./ctags
vim 自带的 javascript 缩进简直没法使用,同时还有 html 里的 javascript 缩进也是一塌糊涂。而强大的插件vim-javascript则解决了上面的问题。
pydoc将python帮助文档集成到vim中,可以方便地一边写程序一边浏览帮助文档,如下图:
vim的默认配置对python的支持有限,要在编写代码时及时得到变量拼写错误等提示,可安装。 Python 社区著名的,是官方的python代码规范,如果想编写严格遵循PEP 8的代码,可使用pep8。为了方便,有人将两个插件整合到一起,打造出flake8,该工具可通过插件vim-flake8与vim整合。
pep8、flake8的安装很简单:
$ sudo pip install pep8
$ sudo pip install pyflakes
$ sudo pip install flake8
不过由于syntastic的存在,没有多大必要使用vim-flake8了。
有时候想编译运行一个简单的源文件,这种情况退出vim在编译运行无疑显得麻烦,而SingleCompile很好地解决了这个问题。SingleCompile有以下特点:
编译运行源文件时用到了vim的quickfix feature和;
自动选择使用编译器或者解释器;
支持多种语言;
可以自定义编译/解释的模板;
可以设置以下键映射:
nmap &F7& :SCCompile&cr&
nmap &F5& :SCCompileRun&cr&
给类/结构体/枚举等数据类型添加语法高亮显示, 使 vim 在显示效果上可与 Visual Studio 相媲美。 成功安装该插件后, 打开项目文件, 执行如下命令即可显示高亮效果::UpdateTypesFile。
TagHighlight支持许多种语言:C、C++、Java等。
Powerline插件美化vim状态栏的显示。我的配置如下:
set laststatus=2
& Always show the statusline set t_Co=256
& Explicitly tell Vim that the terminal support 256 colors let g:Powerline_symbols = 'unicode'
效果图如下:
可以列出当前加载的所有插件:
:scriptnames //list all plugins
启动vim时可以禁用所有插件:
--nopluginSkip loading plugins. Implied by-u NONE.
也可以禁用指定的某些插件。如果是使用pathogen管理插件,则有两种方法:
修改.vim/bundle中插件目录名字,比如要禁用插件syntastic,可以通过下面命令:
mv .vim/bundle/syntastic .vim/bundle/syntastic~
使用g:pathogen_disabled变量,可以将插件名添加到该变量:
& To disable a plugin, add it's bundle name to the following list
let g:pathogen_disabled = ['syntastic']
if v:version & '703584'
call add(g:pathogen_disabled, 'YouCompleteMe') endif execute pathogen#infect()
上面命令将禁用syntastic插件,并且当vim版本号低于7.3.584时,禁用YouCompleteMe插件。
& 相关主题:Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe
Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe
&&& 使用Ubuntu和vim已经有一段时间了,对于Vim下的插件应用,我总是抱着一股狂热的态度。这次,又在网上闲逛着,发现了一个个人博客提到了Vim代码补全这回事,并提到了YouCompleteMe这个插件。顿时激起了我折腾的欲望。以前我都是使用Ctags+&C-n&或&C-p&来进行补全,然而其命中率却比较低,有时候根本就乱匹配。于是决定将YouCompleteMe这个插件安装好适用一下,同时,用Vundle也好让我将.vim文件夹下的文件清理一下.
(1)相关链接
&YouCompleteMe插件要求Vim 版本在7.3.584及以上,而Ubuntu13.04源中的Vim已经比较老了。所以,我们可以在源中添加PPA,或者编译源码手动更新VIM的版本。
&这是一个新生代vim插件管理器,使用git进行插件安装和更新。以前有一个pathogen。插件管理器的好处是:使用简单,自动化管理vim的插件。让你的.vim文件夹远离混乱不堪的窘境,从此一手.vimrc走天下。
&LLVM+Clang是Apple公司资助的一个项目,YouCompleteMe精确的补全功能完全依赖于Clang的代码解析。我们需要安装好Clang 3.2+以便为YCM提供支持。
SVN和Git。用于从代码库中检出源代码。在Ubuntu下这两个软件的安装都非常简单,使用apt-get命令即可安装完成。
和.这两个插件都是配合使用的。YCM不用再说,Syntastic用于源码的实时检查。具体效果如同Eclipse一样,在代码编写的过程中即可实时报告语法错误。
Cmake.后面在编译过程中会使用到,安装命令:sudo apt-get install cmake.
(2)配置VIM
升级到7.3.584+。Ubuntu下需要手动添加PPA(Personal Package Archives),可以使用命令行add-apt-repository来进行添加,如:
$ sudo add-apt-repository ppa:nmi/vim-snapshots
$ sudo apt-get update
$ sudo apt-get install vim
某些PPA也提供了源地址,那么就可以直接打开/etc/apt/source.list进行添加。二者的本质是一样的。如从源码编译vim,可参考。
下载。Vundle托管在Github上,需要使用到git来检出源代码。
$ git clone https:///gmarik/vundle.git ~/.vim/bundle/vundle
以上命令直接将源代码检出到了~/.vim/bundle/vundle这个目录下。
下载完了vundle后,需要配置好.vimrc文件。需要配置的模板如下(摘在github):
set nocompatible
" be iMproved
filetype off
" required!
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
" My bundles here:
" original repos on GitHub
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
" vim-scripts repos
Bundle 'L9'
Bundle 'FuzzyFinder'
" non-GitHub repos
Bundle 'git:///command-t.git'
" Git repos on your local machine (i.e. when working on your own plugin)
Bundle 'file:///Users/gmarik/path/to/plugin'
filetype plugin indent on
" required!
其中需要说明的是:filetype off这一条实际上并不需要。因为这条命令将导致语法着色失败。我的.vimrc里面并没配置这一条。当所需要的vim插件托管在Github上时,该插件的可写成“Bundle 'scrooloose/syntastic'”;当插件在上面时,我们只需要写明该插件的名称,还要加上.vim扩展名。否则vundle无法更新该插件。基本上这两种情况可以满足我们大部分人的需要了。
vundle的使用。先将~/.vim/下面原先安装的插件都"rm -rf"掉吧,由vundle来接手管理工作。打开一个vim窗口,执行命令:BundleInstall。接下来vundle会自动去网上将相关插件下载下来并安装好。在此过程中,vundle还会:helptags命令。因此,我们可以直接在vim中查看插件的帮助文档。要删除一个插件也很简单,先在~/.vimrc中移除该插件条目,然后进入vim执行命令:BundleClean。嘿嘿,vundle将自动清除掉插件的文件夹!狂拽炫酷吊炸天!
编译LLVM+Clang的源代码。在上面Clang 3.3并没有Ubuntu13.04 32bit的预编译的二进制程序,所以只好下载源码进行手工编译。命令如下:
//Checkout LLVM:
cd llvmsrc
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
//Checkout Clang:
cd llvmsrc
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
//Checkout Compiler-RT:
cd llvmsrc
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
//Get the Test Suite Source Code [Optional]
cd llvmsrc
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
//Configure and build LLVM and Clang:
cd llvmsrc
mkdir build (for building without polluting the source dir)
../llvm/configure --enable-optimized
以上步骤中唯一需要注意的是configure的时候,需要指定--enable-optimized参数。否则默认configure的将是Debug版本,问题多多。最后,我们使用make命令进行编译。编译过程比较长,耗时半个小时左右。这一步主要是为了下面编译YouCompleteMe插件做准备。
(1)编译YouCompleteMe。没错,这个插件需要编译!在Github项目说明中有详细的安装和使用方法,不过呢,官方说明中的Full Installation并没有针对Ubuntu13.04 32bit的编译说明,而且,该说明中使用的是预编译Clang包。原先按照这个说明执行了一次,但是总是在libclang.so上面出错,要不就是版本不对,要不就是根本不生成libclang.so。最后在网上找到了一个,再结合官方说明编译成功的。编译步骤如下:
下载源码。我们在前面使用vundle已经下载好了,因此这一步跳过。
执行命令:
$ mkdir ~/ycm_build
$ cd ~/ycm_build
$ cmake -G "Unix Makefiles"
~/.vim/bundle/YouCompleteMe/cpp -DEXTERNAL_LIBCLANG_PATH=~/ycm_temp/llvmsrc/lib/libclang.so
$ make ycm_core
这里要注意的是-DEXTERNAL_LIBCLANG_PATH这个参数,用于指定libclang.so的位置。如果不指定的话,YCM将无法正常工作,总是报:The YCM shut down, crash report...之类的错误。而这个libclang.so就是我们在编译Clang的时候生成的。因此,相关路径(也即~/ycm_temp/llvmsrc/lib/libclang.so)需要替换成自己对应的路径。
关于make。在官方文档中只使用了:make ycm_support_libs.而我在实际操作中却屡屡失败。实际上,首先要执行:make ycm_core。这样将在~/.vim/bundle/YouCompleteMe/python/目录下自动生成两个文件(libclang.so和ycm_core.so),如下图:
这还是不够的,还必须执行命令:make ycm_support_libs。 这条命令才会生成第三个文件ycm_client_support.so。因为,YouCompleteMe是C/S架构的,所以存在服务器和服务端的说 法。另外,在/tmp/ycm_temp/目录下还可以看到服务和请求日志,更加可以验证这一点。
最后,为了能顺利的完成配置工作,我们还需要配置一下.ycm_extra_conf.py这个文件。项目说明中有个配置模板,我们需要做改动的就是flags部分。使用-isystem标志添加系统的头文件进行解析,而-I标志用于添加第三分的头文件进行解析。我的flags在最后增加如下:
'-isystem',
'/usr/include',
'-isystem',
'/usr/include/c++/',
'-isystem',
'/usr/include/i386-linux-gnu/c++'
此外,为了更好的提高补全效率,我们可以保留原先使用的用Ctags生成的tags文件,并在~/.vimrc中添加:let g:ycm_collect_identifiers_from_tag_files = 1.其中,在vim中使用 :echo tagfiles()可以查看当前使用的tags文件。至于生成tags文件的方法,可以看Ctags的帮助文件或者上网搜索。
至此,配置尚未结束。.ycm_extra_conf.py文件可以是针对工程而言,也可以设置全局的。对工程而言,放在工程的根目录即可。不过每次打开文件都会询问是否加载,这时可以在~/.vimrc中设置:let g:ycm_confirm_extra_conf=0来关闭提示。如果是针对全局的,那么可以在~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py中设置。如果没有问题,应该可以看到YouCompleteMe强大的一面了,效果在下面。
(2)Syntastic和Vundle的安装很简单,主要在于配置,所以就不花时间讲解安装,看看配置就可以了。而重点和难点在于YouCompleteMe和Clang的编译工作,这两个编译步骤都比较复杂,编译耗时较长。所以花了很大篇幅讲解。
(1)效果图。这是补全C++的图,图中红色的小叉是Syntastic的效果。如果需要补全C,还得去.ycm_extra_conf.py中修改一下。
没有想到的是,YCM还能补全文件和目录。。。
下面是Syntastic的效果图,警告和错误标志可配置,光标在错误行时,vim的命令行会有相关错误信息:
(2)遇到的问题。
libclang.so的版本一定要在3.2+,否则YCM无法正常工作。必须要通过上面的make ycm_core和make ycm_support_libs来生成上述的三个.so文件,不能手工拷贝。
如果出现bits/c++config.h文件无法找到的错误.那么可以考虑将系统中存在的c++config.h文件所在的文件夹中的所有文件,拷贝到/usr/include/c++/4.8/bits目录下,参考链接!
(3)相关说明。
编译vim源码的时候,需要打开python选项。
vundle中的插件条目,如果托管在www.vim.org上,需要加.vim扩展名。
一个较为完善的.vimrc。
我的部分插件配置:
""""""""" Settings of taglist""""""""""""""
" increase the width of the taglist window
let Tlist_WinWidth=10
" automatically open the taglist window
let Tlist_Auto_Open=0
" exit wim when only the taglist window exist
let Tlist_Exit_OnlyWindow=1
" open tags with single click
let Tlist_Use_SingleClick=1
" close tag folds for inactive buffers
let Tlist_File_Fold_Auto_Close=1
" show the fold indicator column in the taglist window
let Tlist_Enable_Fold_Column=1
" Automatically update the taglist to include newly edited files
let Tlist_Auto_Update=1
"""""""""" NERDtree settings"""""""""""""""
let NERDTreeWinPos='right'
"""""""""" mini buffer navigator"""""""""""
let g:miniBUfExplMapWindowNavVim=1
let g:miniBufExplMapWindowNavArrows=1
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplModSelTarget=1
let g:miniBufExplUseSingleClick=1
""""""""""""ctags settings"""""""""""""""""
set tags+=~/.vim/cpptags
set tags+=~/.vim/systags
"""""""""""color scheme""""""""""""""""""""
let g:molokai_original=1
""""""""""""vundle"""""""""""""""""""""""""
set nocompatible
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
""""""""vim scripts""""""""""""""""""
Bundle 'taglist.vim'
Bundle 'c.vim'
Bundle 'minibufexpl.vim'
Bundle 'grep.vim'
Bundle 'mru.vim'
Bundle 'comments.vim'
""""""""git repo"""""""""""""""
Bundle 'scrooloose/nerdtree'
Bundle 'Valloric/YouCompleteMe'
Bundle 'vim-scripts/AutoClose'
Bundle 'scrooloose/syntastic'
Bundle 'Lokaltog/vim-powerline'
""""""""""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
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
""""""""""""YCM""""""""""""""""""""
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_collect_identifiers_from_tags_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_confirm_extra_conf = 0
推荐的较为好用的插件包括:
439 """"""""vim scripts""""""""""""""""""
440 Bundle 'taglist.vim'
441 Bundle 'c.vim'
442 Bundle 'minibufexpl.vim'
443 Bundle 'grep.vim'
444 Bundle 'mru.vim'
445 Bundle 'comments.vim'
447 """"""""git repo"""""""""""""""
448 Bundle 'scrooloose/nerdtree'
449 Bundle 'Valloric/YouCompleteMe'
450 Bundle 'vim-scripts/AutoClose'
451 Bundle 'scrooloose/syntastic'
452 Bundle 'Lokaltog/vim-powerline'
Bundle 'kien/ctrlp.vim'
(4)参考链接:
(价值较高)
本文版权归24K纯开源和博客园共同拥有,欢迎转载,但未经作者同意必须保留此声明,且在文章明显位置给出原文链接,否则保留追究法律责任的权利。
发表评论:
TA的最新馆藏

我要回帖

更多关于 vim 语法高亮插件 的文章

 

随机推荐