`
evget
  • 浏览: 139221 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

用VIM编写C/C++程序

阅读更多
文章关键字:|VIM|C|C++|Unix|

    Vi是Unix下最常用的文本编辑器。VIM(Vi IMproved)则是它的增强版。有人常常拿VIM和emacs比较,VIM尽管不象emacs那样有那么多的功能,但是比emacs更方便、好用。用过emacs的人肯定会为emacs的一些快捷键感到烦恼,有时候用真希望自己有八只手。VIM的学习曲线也不象emacs那么长,只要看看VIM自带的 vitutor,大约只要20分钟就能掌握VIM的用法。

    对于Unix下的C/C++的程序员,我推荐你们使用VIM+Ctags的组合来写程序。其中原因听我慢慢道来。(下面对VIM的介绍主要是针对5.6以后的版本)

VIM支持语法制导和自动缩进

     VIM会根据文件的后缀名,如:*.c、*.cpp、*.cc,等,自动设置语法制导(Syntax Highlighting)。C/C++中的一些保留字,如:if、for、include,等等,就会有不同的颜色,这样就会减少程序员犯错的可能,阅读程序的时候相对来说也轻松很多。用下面这些命令在VIM中查看有关语法制导的帮助:“:h syntax”、“:h syn-qstart”、“:h syntax-printing”。

     VIM也支持根据GNU的风格自动缩进,这样程序员编写出来的代码就更易阅读,而且也有利于培养好的编程风格。用下面这些命令在VIM中查看有关自动缩进的帮助:“:h cindent”、“:h cinoptions”、“:h cinoptions-values”、“:h cinkeys”、“:h cinwords”。

使用ctags

     VIM中已经带了ctags这个程序。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。ctags可以帮助程序员很容易地浏览源代码。用下面的命令可以在源代码的根目录下创建“tags”文件:
[/home/brimmer/src]$ ctags -R
“-R”表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。“tags”文件中包括这些对象的列表:

用#define定义的宏
枚举型变量的值 
函数的定义、原型和声明 
名字空间(namespace) 
类型定义(typedefs) 
变量(包括定义和声明) 
类(class)、结构(struct)、枚举类型(enum)和联合(union) 
类、结构和联合中成员变量或函数
    VIM用这个“tags”文件来定位上面这些做了标记的对象,下面介绍一下定位这些对象的方法:
    1) 用命令行。在运行vim的时候加上“-t”参数,例如:
       [/home/brimmer/src]$ vim -t foo_bar
       这个命令将打开定义“foo_bar”(变量或函数或其它)的文件,并把光标定位
       到这一行。
    2) 在vim编辑器内用“:ta”命令,例如:
       :ta foo_bar
    3) 最方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl-]”,用
      “Ctrl-o”退回原来的地方。

    注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:set tags=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。

快速改正错误

     在VIM编辑器的环境下用“:make” 就可以编译程序,当然其前提是在当前目录下有Makefile文件。运行完“:make”之后,如果程序中有错误,就会显示出来。这时候,光标会自动指向第一个出现错误的地方,而且你还可以看到错误的提示。然后,你就可以改正错误,而不用手工找到出错的那一行。记住下面几个有用的命令:

“:cl”列出错误
“:cn”让光标指向下一个错误
“:cp”让光标指向上一个错误
“:cnew”从头开始
     你甚至可以让VIM识别出其它编译器而不是gcc的错误提示。这对一些开发嵌入式系统的程序员这很有用,因为他们很可能用的不是gcc而是其它编译器。通过设置“errorformat”的值,可以让VIM识别出编译器的出错提示。因为不同的编译器的出错提示是不同的,所以如果用的不是gcc就要重新设置。
     “errorformat”的值是一个字符串,它的格式和C语言的scanf的字符串格式相识。gcc的“errorformat”的值为:%f:%l:%m。其中“%f”表示文件名,“%l”表示行号,“%m”表示出错信息。用“:h errorformat”查看详细的帮助信息。用“:h quickfix”、“:h make”、“:h makeprg”、“:h errorfile”查看其它的信息。

有用的快捷键

下面的这些快捷键对程序员很有帮助:
    在函数中移动光标
        [[ 转到上一个位于第一列的“{”
        ]] 转到下一个位于第一列的“{”
        { 转到上一个空行
        } 转到下一个空行
        gd 转到当前光标所指的局部变量的定义
        * 转到当前光标所指的单词下一次出现的地方
        # 转到当前光标所指的单词上一次出现的地方

括号的匹配

     % 用来进行小括号、中括号和大括号的匹配。这要看当前光标指向的是什么符号了。

其它

     VIM的配置文件是“.vimrc”,用这个文件可以配置VIM。VIM的图形界面的版本叫gvim。VIM也有用于Windows平台的版本。

VIM的资源

     VIM的主页:http://www.vim.org/。

原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9173
分享到:
评论

相关推荐

    C edit with vim howto

    如何使用vim提高编写c/c++程序的工作效率。 程序员必读宝典

    vim的配置文件主要是c c++的配置

    配置vim编写c c++ java 等程序,个人的一个vim配置,挺好用的,一直用

    Vim的auto-pairs插件

    我ubuntu16中,用vim编写c和c++程序,安装了此插件,极大地方便了代码的输入。 二、功能介绍: 它可以自动完成大括号、小括号、中括号、双引号、单引号的成对匹配。这里以小括号的输入举例:当你在vim中输入(时,它...

    jeffy-vim:从 code.google.compjeffy-vim 自动导出

    简介jeffy-vim用于配置Vim编辑器,使Vim工作得更像一个C/C++的IDE。在一些插件的润色下,jeffy-vim实现了很多IDE的基本功能,比如:代码解析、代码补全、函数跳转、 程序调试等。我还自己编写了一个插件用于管理项目...

    jeffy-vim-v2.1

    jeffy-vim用于配置Vim编辑器,使Vim工作得更像一个C/C++的IDE。在一些插件的润色下,jeffy-vim实现了很多IDE的基本功能,比如:代码解析、代码补全、函数跳转、 程序调试等。我还自己编写了一个插件用于管理项目,...

    适用于x64 Windows的便携式C和C ++开发套件-C/C++开发

    w64devkit是一个Dockerfile,它从源代码构建了一个小型可移植开发套件,用于在x64 Windows上和x64 Windows上编写C和C ++应用程序。 不需要Docker本身使用这些工具。 它仅用作可靠,干净的环境来进行编译和链接。 ...

    Vim 配置包括所有的配置文件和扩展 适合windows linux

    对从c/c++文件自动生成说明文档 11。空格(space)为查找相当于/ 12. 自动加载vim配置文件 。。。还有很多自己可以去看里面的.vimrc内容,当然也建议你去读一遍里面的内容,有新大陆的发现记得留言告诉我和大家 ...

    具有脚本和其他功能的Midnight Commander叉子。-C/C++开发

    它的目标是:使隐藏的宝石– mcedit –发光并成长以能够与Vim和Emacs竞争,向mcedit和mc添加脚本语言以使其成为可能,并添加一些用该脚本语言编写的有意义的插件。 请查看MCEditWishList以获得计划的增强功能的精选...

    TCP协议socke套接字(服务端&客户端)网络协议配置代码

    此代码是我用来记录学习网络套接字的过程,代码是在linux操作系统的vim界面下基于C++编写的,如果在VS或者其他编译器出现提示不包含一些头文件,是正常的现象,因为其中的一些头文件是linux操作系统才有的(自己踩过...

    gdb_graphs:使用gdb和python可视化CC ++程序的函数调用流

    gen_graph.py描述使用 graphviz 点对象和 matplotlib 可视化 C/C++ 程序的函数调用流的 Python 命令行工具。 Directory structure:├── gallery│ ├── graph_GNU_MAKE_.png│ ├── graph_QEMU.png│ ├── ...

    Linux C程序设计大全

    2.6.1 表达式优化——使用替换程序中的乘除法 2.6.2 表达式优化——常量折叠 2.6.3 表达式优化——使用数学公式 2.6.4 表达式优化——存储问题 2.6.5 分支优化——改变判断顺序 2.6.6 分支优化——使用switch语句 ...

    OperatingSystemExperiments:2020-2021第二学期操作系统实验

    OperatingSystemExperiments 操作系统实验 本仓库为操作系统实验材料,包括实验手册和实验报告模板... C/C++编程语言 编辑器:vim/emacs 编译器:gcc/g++ 调试工具: gdb 附: 实验报告提交事项 1、 实验报告提交时请以

    考试系统毕业设计项目含源码-resume:恢复

    C/C++ 和 Swift 参数提示的 YouCompleteMe fork。 YouCompleteMe 是一个众所周知的项目,它在 Vim 编辑器中提供模糊代码完成功能。 技术能力 编程语言: C C++ Go Rust Python Assembly Javascript PureScript 库: ...

    初窥Linux 之我最常用的20条命令总结

    然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Linux系统的人有所不同。因为不想在使用是总是东查西找,...

    Voodoo-Mock:用于C ++的模拟对象自动代码生成器(与python等效)

    Voodoo-Mock是一个框架,用于在C ++中基于“模拟对象”进行单元测试。 Voodoo-Mock用python写(由LLVM项目在CLang上包装),解析C ++代码,并生成重定向和模拟类。...包括很棒的VIM集成实用程序-加快您的周期。 Voodo

    xkb-switch:从命令行切换X键盘布局

    xkb-switch是一个C ++程序,它允许查询和更改XKB布局状态。 最初由J.Broomley编写的基于Ruby的代码。 XKBquery / set类的XKeyboard.cpp实现 XKbSwitch.cpp主程序 XKbSwitchApi.cpp Vim API绑定 C ++类对与X相关的...

    college-algoritma-pemrograman:每个为基础程序设计编写的代码都可以帮助教授基础程序设计,该存储库专门用于计算机科学的学生

    这是如何在我的校园中使用c ++学习基础编程的完整代码。 在本文中,我使用在Terminal Linux中编译并运行的gcc 依存关系 海湾合作委员会 vim vscode 代码块 开发C ++ 如何连接 该资料对所有想要确保每个资料都更新...

    javasnmp源码-awesome-stars::sparkles::sparkles:我自己的真棒清单!

    为人类编写的 Python 最佳实践指南。 C - 如何从头开始创建操作系统 - 在 Web 浏览器中可视化 Python、Java、JavaScript、TypeScript、Ruby、C 和 C++ 代码执行 - 具有文件加密和群组共享的文件同步和共享软件,强调...

Global site tag (gtag.js) - Google Analytics