用VIM编写C/C++程序
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”文件中包括这些对象的列表:
l 用#define定义的宏
l 枚举型变量的值
l 函数的定义、原型和声明
l 名字空间(namespace)
l 类型定义(typedefs)
l 变量(包括定义和声明)
l 类(class)、结构(struct)、枚举类型(enum)和联合(union)
l 类、结构和联合中成员变量或函数
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”之后,如果程序中有错误,就会显示出来。这时候,光标会自动指向第一个出现错误的地方,而且你还可以看到错误的提示。然后,你就可以改正错误,而不用手工找到出错的那一行。记住下面几个有用的命令:
l “:cl”列出错误
l “:cn”让光标指向下一个错误
l “:cp”让光标指向上一个错误
l “: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/。
版权说明
这篇文章的版权属于作者brimmer(brimmer@linuxaid.com.cn)和www.linuxaid.com.cn。如果要转载请加上版权提示。
Brimmer的主页:www.linuxaid.com.cn/engineer/brimmer。HTML格式和Word格式的文档可以在主页上找到。
分享到:
相关推荐
如何使用vim提高编写c/c++程序的工作效率。 程序员必读宝典
配置vim编写c c++ java 等程序,个人的一个vim配置,挺好用的,一直用
我ubuntu16中,用vim编写c和c++程序,安装了此插件,极大地方便了代码的输入。 二、功能介绍: 它可以自动完成大括号、小括号、中括号、双引号、单引号的成对匹配。这里以小括号的输入举例:当你在vim中输入(时,它...
简介jeffy-vim用于配置Vim编辑器,使Vim工作得更像一个C/C++的IDE。在一些插件的润色下,jeffy-vim实现了很多IDE的基本功能,比如:代码解析、代码补全、函数跳转、 程序调试等。我还自己编写了一个插件用于管理项目...
jeffy-vim用于配置Vim编辑器,使Vim工作得更像一个C/C++的IDE。在一些插件的润色下,jeffy-vim实现了很多IDE的基本功能,比如:代码解析、代码补全、函数跳转、 程序调试等。我还自己编写了一个插件用于管理项目,...
w64devkit是一个Dockerfile,它从源代码构建了一个小型可移植开发套件,用于在x64 Windows上和x64 Windows上编写C和C ++应用程序。 不需要Docker本身使用这些工具。 它仅用作可靠,干净的环境来进行编译和链接。 ...
对从c/c++文件自动生成说明文档 11。空格(space)为查找相当于/ 12. 自动加载vim配置文件 。。。还有很多自己可以去看里面的.vimrc内容,当然也建议你去读一遍里面的内容,有新大陆的发现记得留言告诉我和大家 ...
* 使用 "vi"、"vim" 或任何其他文本编辑器来编写 C 语言程序 * C 环境设置需要文本编辑器和 C 编译器 * 文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi * C 编译器用于把源代码...
它的目标是:使隐藏的宝石– mcedit –发光并成长以能够与Vim和Emacs竞争,向mcedit和mc添加脚本语言以使其成为可能,并添加一些用该脚本语言编写的有意义的插件。 请查看MCEditWishList以获得计划的增强功能的精选...
此代码是我用来记录学习网络套接字的过程,代码是在linux操作系统的vim界面下基于C++编写的,如果在VS或者其他编译器出现提示不包含一些头文件,是正常的现象,因为其中的一些头文件是linux操作系统才有的(自己踩过...
在使用 GCC 编译器时,需要了解编译器的基本命令和参数,例如编译 C 程序、编译 C++ 程序、生成目标文件、连接目标文件等等。 GCC 编译器还提供了许多扩展功能,例如优化编译、调试编译等等。 在调试方面,GDB(GNU...
gen_graph.py描述使用 graphviz 点对象和 matplotlib 可视化 C/C++ 程序的函数调用流的 Python 命令行工具。 Directory structure:├── gallery│ ├── graph_GNU_MAKE_.png│ ├── graph_QEMU.png│ ├── ...
2.6.1 表达式优化——使用替换程序中的乘除法 2.6.2 表达式优化——常量折叠 2.6.3 表达式优化——使用数学公式 2.6.4 表达式优化——存储问题 2.6.5 分支优化——改变判断顺序 2.6.6 分支优化——使用switch语句 ...
* 编译型语言:C、C++、Go等,需要提前编译,编译语言都有编译器。 * 解释型语言:Shell、Python、PHP等,程序运行不需要提前编译,一边执行,一边解释,每种解释型语言都有解释器。 * Shell语言支持大部分编程语言...
嵌入式 Linux 应用程序开发详解-第 3 章 Linux下的 C 编程基础整理 本章节主要介绍了 Linux 下的 C 语言编程基础,covering the basics of C programming on Linux, including the history of C language, features...
OperatingSystemExperiments 操作系统实验 本仓库为操作系统实验材料,包括实验手册和实验报告模板... C/C++编程语言 编辑器:vim/emacs 编译器:gcc/g++ 调试工具: gdb 附: 实验报告提交事项 1、 实验报告提交时请以
C/C++ 和 Swift 参数提示的 YouCompleteMe fork。 YouCompleteMe 是一个众所周知的项目,它在 Vim 编辑器中提供模糊代码完成功能。 技术能力 编程语言: C C++ Go Rust Python Assembly Javascript PureScript 库: ...
然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Linux系统的人有所不同。因为不想在使用是总是东查西找,...
2. 考生编写的程序应该使用标准输入输出,不应该使用任何文件操作。 3. 评测时使用的时间为 Linux 系统的 real time,与 user time 相比,程序的 IO 操作等将被算入运行时间。 4. 除非题目允许,考生的程序无法使用...