Vim下的代码自动补全和代码跳转阅读

标签: Linux | 发表时间:2011-09-27 14:24 | 作者:wl1011 Frankenstein
出处:http://www.blogread.cn/it/

标签:  vim  补全

    【前言】

    Linux之所以今天仍然只被少数人使用,不能像windows一样进入寻常百姓家,其配置之难之烦,还是很让人不爽。号称Linux编辑器哼哈二将之一的Vim也是难逃此列。虽然很多高手用的得心应手,但是作为初学者往往不知道如何下手。。。

    我希望把同为初学者的我的配置经历,以尽量简洁的语言叙述,试图使这个过程看上去不再那么恐怖。

    【概念】

    代码自动补全和代码跳转阅读,应该是作为程序员最常用的功能之一了,具体二者是指什么我就不解释了。微软的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文件中这样就不是好的做法了。暂时不知道这个问题是由于我自己配置错误还是程序没有实现。

您可能还对下面的文章感兴趣:

  1. Emacs配置C/C++-mode的代码智能提示和自动补全 [2010-05-25 13:28:04]
  2. 通过vim字典补全,实现php函数名自动补全 [2010-01-05 13:54:42]


相关 [vim 代码 自动补全] 推荐:

Vim下的代码自动补全和代码跳转阅读

- Frankenstein - IT技术博客大学习
    Linux之所以今天仍然只被少数人使用,不能像windows一样进入寻常百姓家,其配置之难之烦,还是很让人不爽. 号称Linux编辑器哼哈二将之一的Vim也是难逃此列. 虽然很多高手用的得心应手,但是作为初学者往往不知道如何下手.     我希望把同为初学者的我的配置经历,以尽量简洁的语言叙述,试图使这个过程看上去不再那么恐怖.

gocode——VIM 和 Emacs 的 golang 代码自动补全

- XiaoHui - Some reminiscences, some memories
虽然 golang 自身提供了 VIM 的语法高亮之类的脚本,但 autocompletion 并没有官方解决方案. 无意之中发现 gocode 这个支持 VIM 和 Emacs 的 autocompletion daemon. 这里有个Flash 动画演示,展示了 gocode 的强大. 我得说,用过之后,感觉速度确实够快.

更好的用vim浏览Javascript代码

- cRabdanceR - Kejun's Blog
vim默认没有一般IDE的outline视图,浏览长篇Javascript源文件很麻烦,taglist插件正是弥补这点不足. 它可以将所有方法和变量分级罗列出来,一目了然. taglist是依赖强大的ctags实现的. ctags支持41种编程语言,其中包括Javascript,但对Javascript支持较随意.

vim代码补全终极配置

- baocheng - 博客园-首页原创精华区
下面的效果如如果没有特殊说明,均是不需要按代码提示的快捷键(例如ctrl+p等)的,看看效果,是不是很想visual assist. 1.1  结构struct和枚举enum代码提示:. 1.2  用户定义函数代码提示. 1.3  用户定义变量代码提示. 1.4  c++ class method代码提示:.

给vim添加自动代码长度检测逻辑

- Hitsmaxft - WindStorm
每一种编程语言都有自己的代码规范,这里面少不了的就有代码长度. 比如一般c或者python就是80,而java就是100. 很多朋友都喜欢在vim下写代码,也就习惯了设置不同长度的wrap来处理这个问题. 这里介绍两个另类但是也很常用的方法. 一种是在vim里面自动在80/100的地方画一条红色竖线,提醒你,一旦你越线,就超过代码长度了.

Vim初探(一)

- Lee - 博客园-首页原创精华区
  Vim是一款简单而强大的文本编辑器,它能以简单的方式完成复杂的操作. Vim(http://www.vim.org/)是一款开源软件,提供Windows, Linux和MacOS上的多平台的版本. MacOS上的Vim称为MacVim(http://code.google.com/p/macvim/).

Vim 秘籍表

- fandunqiu - LinuxTOY
献给程序员们,彩色风格的 VIM 速查秘籍表,适合打印、设为桌面背景或放置到专门的数码相框. 同时还提供 300DPI 的清晰版、黑白和适用于红绿色盲人士的版本,请移步至作者站点下载. 消息来源:CoolShell 作者 陈皓. 分类: Screenshots, Vim plugins |. 收藏到 del.icio.us |.

Vim学习笔记

- 临池学书 - C++博客-首页原创精华区
最近在学习Vimtutor中的相关内容,Vim的使用博大精深,很多命令一旦不使用就会忘记,下面把其中的没有使用到的相关命令做一个简单的总结,供以后复习使用. 至于常见的保存,插入等等命令,则不予记录,在以后的使用中加深练习即可. To change until the end of a word, type  ce (ce + 修正的单词).

VIM中替换技巧

- lostsnow - Web Digest
: use :rewind to recommence search " multiple file search better but cheating :bufdo %s/searchstr/&/gic : say n and then a to stop " How to search for a URL without backslashing ?http://www.vim.org/.

简明 Vim 练级攻略

- Andy - 酷壳 - CoolShell.cn
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的. 下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令.