﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-小山日志-文章分类-转贴</title><link>http://www.cppblog.com/nj-blog/category/2567.html</link><description>读书,学习与思考.</description><language>zh-cn</language><lastBuildDate>Thu, 22 May 2008 05:53:03 GMT</lastBuildDate><pubDate>Thu, 22 May 2008 05:53:03 GMT</pubDate><ttl>60</ttl><item><title> 用vim编写c/c++程序</title><link>http://www.cppblog.com/nj-blog/articles/11952.html</link><dc:creator>小山日志</dc:creator><author>小山日志</author><pubDate>Sat, 02 Sep 2006 03:47:00 GMT</pubDate><guid>http://www.cppblog.com/nj-blog/articles/11952.html</guid><wfw:comment>http://www.cppblog.com/nj-blog/comments/11952.html</wfw:comment><comments>http://www.cppblog.com/nj-blog/articles/11952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/nj-blog/comments/commentRss/11952.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/nj-blog/services/trackbacks/11952.html</trackback:ping><description><![CDATA[
		<div class="postcolor" id="post-17">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以后的版本）<br />VIM支持语法制导和自动缩进<br /><br />VIM会根据文件的后缀名，如：*.c、*.cpp、*.cc，等，自动设置语法制导（Syntax 
Highlighting）。C/C++中的一些保留字，如：if、for、include，等等，就会有不同的颜色，这样就会减少程序员犯错的可能，阅读程序的时候相对来说也轻松很多。用下面这些命令在VIM中查看有关语法制导的帮助：“:h 
syntax”、“:h syn-qstart”、“:h 
syntax-printing”。<br /><br />VIM也支持根据GNU的风格自动缩进，这样程序员编写出来的代码就更易阅读，而且也有利于培养好的编程风格。用下面这些命令在VIM中查看有关自动缩进的帮助：“:h 
cindent”、“:h cinoptions”、“:h cinoptions-values”、“:h cinkeys”、“:h 
cinwords”。<br />使用Ctags<br /><br />VIM中已经带了Ctags这个程序。尽管ctags也可以支持其它编辑器，但是它正式支持的只有VIM。Ctags可以帮助程序员很容易地浏览源代码。用下面的命令可以在源代码的根目录下创建“tags”文件：<br /><br />[/home/brimmer/src]$ 
ctags -R<br /><br />“-R”表示递归创建，也就包括源代码根目录下的所有子目录下的源程序。“tags”文件中包括这些对象的列表：<br /><br />l 
用#define定义的宏<br /><br />l 枚举型变量的值<br /><br />l 函数的定义、原型和声明<br /><br />l 
名字空间（namespace）<br /><br />l 类型定义（typedefs）<br /><br />l 变量（包括定义和声明）<br /><br />l 
类（class）、结构（struct）、枚举类型（enum）和联合（union）<br /><br />l 
类、结构和联合中成员变量或函数<br /><br />VIM用这个“tags”文件来定位上面这些做了标记的对象，下面介绍一下定位这些对象的方法：<br /><br />1) 
用命令行。在运行vim的时候加上“-t”参数，例如：<br /><br />[/home/brimmer/src]$ vim -t 
foo_bar<br /><br />这个命令将打开定义“foo_bar”（变量或函数或其它）的文件，并把光标定位到这一行。<br /><br />2) 
在vim编辑器内用“:ta”命令，例如：<br /><br />:ta foo_bar<br /><br />3) 
最方便的方法是把光标移到变量名或函数名上，然后按下“Ctrl-]”。用“Ctrl-o”退回原来的地方。<br /><br />注意：运行vim的时候，必须在“tags”文件所在的目录下运行。否则，运行vim的时候还要用“:set 
tags=”命令设定“tags”文件的路径，这样vim才能找到“tags”文件。<br />快速改正错误<br /><br />在VIM编辑器的环境下用“:make”就可以编译程序，当然其前提是在当前目录下有Makefile文件。运行完“:make”之后，如果程序中有错误，就会显示出来。这时候，光标会自动指向第一个出现错误的地方，而且你还可以看到错误的提示。然后，你就可以改正错误，而不用手工找到出错的那一行。记住下面几个有用的命令：<br /><br />l 
“:cl”列出错误<br /><br />l “:cn”让光标指向下一个错误<br /><br />l “:cp”让光标指向上一个错误<br /><br />l 
“:cnew”从头开始<br /><br />你甚至可以让VIM识别出其它编译器而不是gcc的错误提示。这对一些开发嵌入式系统的程序员这很有用，因为他们很可能用的不是gcc而是其它编译器。通过设置“errorformat”的值，可以让VIM识别出编译器的出错提示。因为不同的编译器的出错提示是不同的，所以如果用的不是gcc就要重新设置。<br /><br />“errorformat”的值是一个字符串，它的格式和C语言的scanf的字符串格式相识。<br /><br />gcc的“errorformat”的值为：%f:%l:\%m。其中“%f”表示文件名，“%l”表示行号，“%m”表示出错信息。<br /><br />用“:h 
errorformat”查看详细的帮助信息。<br /><br />用“:h quickfix”、“:h make”、“:h makeprg”、“:h 
errorfile”查看其它的信息。<br />有用的快捷键<br /><br />下面的这些快捷键对程序员很有帮助：<br />在函数中移动光标<br /><br />[[ 
转到上一个位于第一列的“{”<br /><br />]] 转到下一个位于第一列的“{”<br /><br />{ 转到上一个空行<br /><br />} 
转到下一个空行<br /><br />gd 转到当前光标所指的局部变量的定义<br /><br />* 转到当前光标所指的单词下一次出现的地方<br /><br /># 
转到当前光标所指的单词上一次出现的地方<br />括号的匹配<br /><br />% 
用来进行小括号、中括号和大括号的匹配。这要看当前光标指向的是什么符号了。<br />其它<br /><br />VIM的配置文件是“.vimrc”，用这个文件可以配置VIM。VIM的图形界面的版本叫gvim。VIM也有用于Windows平台的版本。<br />VIM的资源<br /><br />VIM的主页：http://www.vim.org/。<br />版权说明<br /><br />这篇文章的版权属于作者brimmer（ 
brimmer@linuxaid.com.cn ）和www.linuxaid.com.cn 
。如果要转载请加上版权提示。<br /><br />Brimmer的主页：www.linuxaid.com.cn/engineer/brimmer 
。HTML格式和Word格式的文档可以在主页上找到。</div>
		<!--IBF.ATTACHMENT_17-->
<img src ="http://www.cppblog.com/nj-blog/aggbug/11952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/nj-blog/" target="_blank">小山日志</a> 2006-09-02 11:47 <a href="http://www.cppblog.com/nj-blog/articles/11952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>