通过简单的配置文件将 vim 打造成专业 ide,支持 mac linux cygwin。看过数篇 vim 配置文件,必要时去定制vim 的插件,将 vim 的 ide 用户体验尽量做到极致。

使用范围

系统要求:vim 7.2及以上版本,安装有ctags和cscope,完美支持linux, mac, cygwin. (mac下为更良好地用户体验,请将shell的描述文件成pro)
功能:浏览和编写c/c++, python项目
特点:安装绿色简单,功能可比source insight,但保持了原汁原味的vim。

安装方法

1.把.vimrc和.vim文件夹拷贝到家目录下,如果终端背景为白色,将.vimrc中background选项改为light。
2.安装cscope ctags。用apt-get安装: apt-get install ctags cscope(用yum安装: yum install ctags cscope, 用brew安装: brew install ctags cscope)

使用到的插件

tagbar         #函数变量列表(修改部分BUG,修改配置文件)
nerdcommenter  #注释功能(修改C语言默认用//注释,修改配置文件)
a              #切换头文件和实现文件(修改跨目录不能找到的问题,无修改配置文件)
nerdtree       #目录树(无修改,修改配置文件)
omnicpp        #C/C++的自动补全插件(无修改,修改配置文件)
bufexplorer    #当前打开的文件列表(无修改,无修改配置文件)
AutoComplPop   #自动弹出补全菜单 (无修改,无修改配置文件)                                            
SuperTab       #按tab补全 (无修改,无修改配置文件)

自己总结的浏览和编写C/C++工程的常规的使用方法

打开项目:
    cd到工程根目录下,vim (回车),必须是工程根目录。按F2打开文件列表,选择文件打开。
建立索引:
    第一次打开项目,及代码更新后按F7更新索引,这个索引与source insight中的更新索引意义相同。
浏览C/C++代码:
    浏览代码会常用的几个功能:
    1.跳转
        F3         通过tagbar函数列表跳转到当前文件的某个函数
        ctrl-]     跳转到光标下单词在工程中定义的位置
        gd         如果光标下单词是局部变量,按这个跳转到它定义的位置
        :tag word  跳转到word定义的位置     
        ctrl-2 g   跳转到光标下单词在/usr/include中定义的位置
        ctrl-h, j, k, l 光标在各个窗口间跳转
        %          在一个大小中括号跳转到对应括号
        [[         跳转到当前函数的开头
        ][         跳转到当前函数的结尾
        ctrl-o     回退到光标之前的位置。
        ctrl-i     按ctrl-o后返回。
    2.搜索
        ctrl-[ s   在整个工程里面搜索光标下单词,但不包括字符串和注释。
        ctrl-[ t   在整个工程里面搜索光标下单词,包括字符串和注释。
        :cscope find t word  在工程中搜索字符串word。
        <F5>       高亮光标下单词
        #          向上搜索光标下单词
        *          向下搜索光标下单词
        /word      搜索单词word
        /\<word\>  搜索单词word,并要求整词匹配
    3.切换到工程下的另一个文件
        F2         通过文件树跳转。
        F4         已经打开的文件列表
        F6         在头文件和实现文件两个文件切换。
        ctrl-[ f   跳转到文件名含有光标下单词的文件。
        ctrl-[ i   跳转到包含光标下单词对应文件的文件。
        ctrl-[ I   跳转到包含当前文件的文件。
编写C/C++代码:
    1.替换功能
        :%s /word1/word2/g 将这个文件里的word1替换成word2。
    2.对齐代码
        =          对齐选中行代码
        ==         对齐当前行代码
        gg=G       对齐整个文件
    3.注释及反注释
        ,          注释选中行
        .          反注释选中行

TODO

1.ctags在文件编码与终端编码不相同且跳转行有中文的情况下无法跳转
2.在cygwin下在同时打开nerdtree和tagbar的情况下退出,退出会出错

缘起

刚开始做Linux C/C++的时候试了很多编辑方式,包括:
souce insight:通过Linux上的samba服务去写Linux主机里的代码(我觉得不通过定制版的vim和emacs之外最好的选择,一方面不需要打开虚拟机界面,另一方面souce insight写代码也确实挺好用的。
eclipse:很好用,但不得打开Linux图形界面,另外eclipse运行很慢,尤其大项目
qt creator:即使不是QT项目,当然也可以在Linux图形界面用QT CREATOR写代码,比eclipse运行快,当然如果是Linux下的QT项目当然QT creator也是首选。
VIM与EMACS:作为开发环境都要加跳转及自动补全类的插件。它们虽然功能上可能并没有其他IDE境强大,但其他IDE都需要打开很耗资源的图形界面,另外VIM和EMACS有很多其他IDE都不具备的好处,比如所有操作都不需要鼠标,能一键搜索等。另外它们都可以直接ssh到Linux主机然直接使用,缺点在于上手起来都较不容易。VIM与EMACS都可以无界限的加任何功能的插件,理论在一个上面能实现的功能在另一个上面一定能实现,不存在谁比谁强大的问题。从基本操作上个人还是更喜欢emacs,但因为折腾emcas插件比vim更难所以选择了vim。
这个VIM的定制是在一年的时间里逐渐完善起来的,其中一段时间转了emacs,后来折腾cedet实在没折腾不完善,也找不到谁用能交流下,所以最终回到了vim。这个vim定制的原则是尽量保持精简快速与更好的兼容性,但实现更多更强更实用更加人性化的功能。

Vim 扩展工具 vim-ide (转)的更多相关文章

  1. 只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs

    只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs [ide is evil] (http://i.cnblogs.com/EditP ...

  2. 【转】手把手教你把Vim改装成一个IDE编程环境(图文)

    手把手教你把Vim改装成一个IDE编程环境(图文) By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage ...

  3. Vim扩展YouCompleteMe插件

    在Vim中安装YouCompleteMe插件 一.安装前的说明: 1.确保vim版本>=7.4,若MAC OS,建议直接安装MacVim(8.0版本). ps:如果不想使用MacVim的GUI, ...

  4. Vim改装成一个IDE编程环境

      1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个 ...

  5. 04-手把手教你把Vim改装成一个IDE编程环境(图文)

    Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重 ...

  6. Openstack 实现技术分解 (3) 开发工具 — VIM & dotfiles

    目录 目录 前文列表 扩展阅读 前言 插件管理 Vundle 主题 Solarized 浏览项目目录结构 Nerdtree Symbol 窗口 Tagbar 文件模糊查询 CtrlP 代码补全 You ...

  7. Vim配置及说明——IDE编程环境

    Vim配置及说明——IDE编程环境 Vim配置及说明——IDE编程环境 1.基本及字体 2.插件管理 3.主题风格 4.窗口设置 5.目录树导航 6.标签导航 7.taglist 8.多文档编辑 9. ...

  8. 开发者和系统管理者最喜爱的开源工具Vim 起步学习的五个技巧

    多年来,我一直想学 Vim.如今 Vim 是我最喜欢的 Linux 文本编辑器,也是开发者和系统管理者最喜爱的开源工具.我说的学习,指的是真正意义上的学习.想要精通确实很难,所以我只想要达到熟练的水平 ...

  9. Use Vim as a Python IDE

    Use Vim as a Python IDE I love vim and often use it to write Python code. Here are some useful plugi ...

随机推荐

  1. 16进制字符串转换为byte数组

    /// <summary> /// 16进制字符转换为byte数组 /// </summary> /// <param name="hexString" ...

  2. net 2.0使用ajax

    asp.net ajax中用到了几个dll文件,这些可以从网上下载.http://ajax.asp.net站点下可以找到相关的下载.这其中包括:System.Web.Extensions.dll.Sy ...

  3. 设置Proxy Server和SQL Server实现互联网上的数据库安全

    ◆首先,我们需要了解一下SQL Server在WinSock上定义协议的步骤: 1. 在”启动”菜单上,指向”程序/Microsoft Proxy Server”,然后点击”Microsoft Man ...

  4. sql 事务和回滚

    (1) set ANSI_NULLS ON --见图1 set QUOTED_IDENTIFIER ON go ALTER proc [dbo].[procname] as begin begin t ...

  5. MySQL基础之 path环境变量的作用 (科普)

    在谈mysql配置环境变量之前,先谈一下windows环境变量的作用,有时候在windows cmd窗口运行命令时,经常会出现“XXX不是内部或外部命令的提示” 原因是系统没有找到执行相应命令的文件( ...

  6. Qt 小技巧之“To-Do 事项”

    Qt Creator 2.5 版本的时候增加了这个插件 一直没怎么用到 现在想起来 google了一下 做个总结吧 先晒图 就是这样啦 用法也很简单 在项目的随便一个位置 写一个注释 只要以上面5个关 ...

  7. [?]Unity快捷键

    Super=Win键. Rererence: What are Unity's keyboard and mouse shortcuts?

  8. C++标准程序库读书笔记-第四章通用工具

    1.Pairs(对组) (1)class pair可以将两个值视为一个单元.任何函数需返回两个值,也需要pair. (2)便捷地创建pair对象可以使用make_pair函数 std::make_pa ...

  9. 从汇编看c++的虚拟继承以及其内存布局(一)

    先看第一种最简单的情形,所有类中没有任何虚函数的菱形继承. 下面是c++源码: class Top {//虚基类 public: int i; Top(int ii) { i = ii; } }; c ...

  10. PHP记录点击数方法

    1.第一种方法: $id = $_GET['id']; //获取文章ID $sql = "UPDATE base SET hits = hits+1 WHERE id = '$id'&quo ...