代码自动补全和代码跳转阅读,应该是作为程序员最常用的功能之一了,具体二者是指什么我就不解释了。微软的Visual Studio就是靠这两样必杀技牢牢占据着广大windows程序员的心(这里面要有强大的VS插件Visual Assistant X一份功劳)。。。但是Linux程序员其实更幸福,不花钱就能搞定这两大功能。

从本质上说,这二者的实现都依赖于一样东西:tag。tag就是程序中的关键词,在C++中主要包括:变量、函数名、类名等。代码自动补全 实际上是 tag的匹配(例如,程序员输入cla时,由于存在class这个c++的tag,就可以用class匹配cla);代码跳转阅读实际上是tag的查找 (例如,程序员要查找一个函数func(),只需要在别的文件中寻找这个func这个tag的位置即可)。

【准备】

我现在的系统是Ubuntu Desktop 10.04 LTS版本。当然,一切工作的前提是你能上网,而且配置好了一个可用的源。

1. 安装Vim和Vim基本插件

我们需要首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:

sudo apt-get install vim vim-doc vim-scripts

其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。

2. Vim配置文件

Vim强大的功能,其来源基本上就两个地方:插件,以及配置文件。

上面已经下载了Vim的基本插件,下面说一下Vim的基本配置。Vim本身的系统配置文件夹是在/usr/share/vim/和/etc /vim /两个文件夹下,我们一般不要去改变这些,改了以后不容易恢复。我们需要在用户文件夹下建立自己的配置文件。假设用户的名字是user。进入用户文件夹 (/home/user/)之后,用gedit新建一个名叫.vimrc的文件:

gedit .vimrc

之所以用gedit是因为vim里面不能拷贝粘贴,为了方便大段大段的文字粘贴,还是先用gedit吧。。。

然后把下面的文字拷贝进这个文件之后保存:

” This line should not be removed as it ensures that various options are

” properly set to work with the Vim-related packages available in Debian.

runtime! debian.vim

” Uncomment the next line to make Vim more Vi-compatible

” NOTE: debian.vim sets ‘nocompatible’. Setting ‘compatible’ changes numerous

” options, so any other options should be set AFTER setting ‘compatible’.

set nocompatible

” Vim5 and later versions support syntax highlighting. Uncommenting the

” following enables syntax highlighting by default.

if has(“syntax”)

syntax on

endif

” detect file type

filetype on

filetype plugin on

” If using a dark background within the editing area and syntax highlighting

” turn on this option as well

set background=dark

” Uncomment the following to have Vim jump to the last position when

” reopening a file

if has(“autocmd”)

au BufReadPost * if line(“‘\\”") > 1 && line(“‘\\”")

let OmniCpp_MayCompleteScope = 1 ” autocomplete with ::

let OmniCpp_SelectFirstItem = 2 ” select first item (but don’t insert)

let OmniCpp_NamespaceSearch = 2 ” search namespaces in this and included files

let OmniCpp_ShowPrototypeInAbbr = 1 ” show function prototype in popup window

let OmniCpp_GlobalScopeSearch=1

let OmniCpp_DisplayMode=1

let OmniCpp_DefaultNamespaces=["std"]

(前几行就是提供了C++中的./->/::等操作符的提示和自动完成)。

6. 自动补全功能的测试

C++开发中经常会用到C++标准库的代码,因此STL的自动补全很重要。可以下载一份C++标准库的源代码来测试一下自动补全功能。

sudo apt-get install build-essential

然后在/usr/include/c++下就可以找到标准库的头文件了。在此文件夹下生成tags文件,并添加到vim的配置文件中(不再重复上面的内容),然后在编程的时候就可以使用自动补全功能了。

下面展示了一张vector的函数补全的效果图:

vector_auto_complete

PS:在自动补全的点,Vim必须知道可能补全的定义。比如说,在namespace std命名空间下的变量和函数,必须要用using namespace std;暴露出来,否则是不能补全的。在.cpp文件中还可以,在.h文件中这样就不是好的做法了。暂时不知道这个问题是由于我自己配置错误还是程序没有 实现。

linux之vim配置的更多相关文章

  1. linux之vim配置及使用示例

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7056193.html linux之vim配置及使用示例 vi的三种模式: 一 ...

  2. Linux下VIM配置以及常用快捷键

    一.VIM配置 在目录 /etc/vim下面,有个名为vimrc的文件,这是系统中公共的vim设置文件,对所有用户都有效.而在每个用户的主目录下,都能自己建立私有的设置文件,命名为:“.vimrc”. ...

  3. Linux笔记-vim 配置

    本文是转载的,我用的ubuntu12.04在vim设置方面就是参考了本文,拿来分享给大家! ubuntu10.10中的设置方法: $cd /etc/vim $sudo cp vimrc vimrc.b ...

  4. linux下vim配置以及一些常用的快捷键

    一些常用的vim编辑器快捷键: h」.「j」.「k」.「l」,分别控制光标左.下.上.右移一格. 按「ctrl」+「b」:屏幕往“后”移动一页. 按「ctrl」+「f」:屏幕往“前”移动一页. 按「c ...

  5. Linux下vim配置详解

    转自http://www.cnblogs.com/witcxc/archive/2011/12/28/2304704.html

  6. Linux中vim的简单配置

    本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...

  7. 快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础

    上次学了一些C开发相关的工具,这次再配置一下VIM,让开发过程更爽一些. 另外再学一些linux下网络开发的基础,好多人学C也是为了做网络开发. 开发环境 首先得有个Linux环境,有时候家里机器是W ...

  8. Vi快捷操作 vim配置【shell文件格式从windows转换为linux】

    vim配置 http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html gg 首行 dd 删除当前行 :.,$d  删除全部内容 :se ...

  9. Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)

    由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...

随机推荐

  1. 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法zt

    HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. HTML5的新标签元素有: <header&g ...

  2. oracle数据库删除数据Delete语句和Truncate语句的对比

    oracle数据库删除数据Delete语句和Truncate语句的对比 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分 ...

  3. Oracle EBS-SQL (SYS-14):查询表空间1.sql

    SELECT d.status "状态",           d.tablespace_name "名称",           d.contents &qu ...

  4. openssl编译(VC6.0)

    官网:http://www.openssl.org/ 得到源码: git clone  https://github.com/openssl/openssl 一.用vc编译器编译: 1.下载nasm: ...

  5. git配置别名

    配置别名   有没有经常敲错命令?比如git status?status这个单词真心不好记. 如果敲git st就表示git status那就简单多了,当然这种偷懒的办法我们是极力赞成的. 我们只需要 ...

  6. git多人协作

    多人协作 当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin. 要查看远程库的信息,用git remote: $ ...

  7. windows设置临时环境变量path

    所有在命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改. 1.查看当前所有可以的环境变量:输入set查看 2.查看某个环境变量:输入 set 变量名 例如 set path 3.修改环境变量 ...

  8. Socks5协议中文文档

    译者:Radeon(Radeon bise@cmmail.com) 译文公布时间:2001-6-18 文件夹 1.介绍 2.现有的协议 3.基于TCP协议的客户 4.请求 5.地址 6.应答 7.基于 ...

  9. HDU 3641 Treasure Hunting(阶乘素因子分解+二分)

    题目链接:pid=3641">传送门 题意: 求最小的 ( x! ) = 0 mod (a1^b1*a2^b2...an^bn) 分析: 首先吧a1~an进行素因子分解,然后统计下每一 ...

  10. Myeclipse2014 SVN安装方法以及项目上传到svn服务器

    1. 打开 Myeclipse 工具栏下的Help下的Install from Site 2.打开后弹出窗口, 并点击Add标签,如下图: 3.现在是最重要的一步,填写相关信息. 在对话框Name输入 ...