Vi
大家都很熟悉,某些情况下它是我们在
Linux
下唯一可用的文本编辑器。其实我们平时所指的
VI
其实是
VIM
(
ViImproved
,
VI
增强版)。有人常常拿
VIM
和
emacs
比较,
VIM
尽管不象
emacs
那样有那么多的功能,但是比
emacs
更方便、好用。
VIM
简单易用,只要看看
VIM
自带的
vitutor
,大约只要
20
分钟就能掌握
VIM
的用法。对于
Linux
下的
C/C++
的程序员,使用
VIM+Ctags
的组合来写程序也许是最佳的选择。
^_^
VI
的使用方法这里就不罗嗦了,本文假设大家已花了
20
分钟学习过了
vitutor
。
^_^
本节我们主要讲一下 Ctags 这个程序。尽管 ctags 也可以支持其它编辑器,但是它正式支持的只有 VIM 。并且 VIM 中已经默认安装了 Ctags ,它可以帮助程序员很容易地浏览源代码。
熟练的使用 ctags 仅需记住下面七条命令:(很简单吧,呵呵)
1 . $ ctags –R * ($ 为 Linux 系统 Shell 提示符 )
2. $ vi –t tag ( 请把 tag 替换为您欲查找的变量或函数名 )
3 . : ts (ts 助记字: tags list, “:” 开头的命令为 VI 中命令行模式命令 )
4 . : tp (tp 助记字: tags 此命令不常用,可以不用记 à preview)—
此命令不常用,可以不用记 à 5 . : tn (tn 助记字: tags next) —
6 . Ctrl + ]
7 . Ctrl + T
本节我们主要讲一下 Ctags 这个程序。尽管 ctags 也可以支持其它编辑器,但是它正式支持的只有 VIM 。并且 VIM 中已经默认安装了 Ctags ,它可以帮助程序员很容易地浏览源代码。
熟练的使用 ctags 仅需记住下面七条命令:(很简单吧,呵呵)
1 . $ ctags –R * ($ 为 Linux 系统 Shell 提示符 )
2. $ vi –t tag ( 请把 tag 替换为您欲查找的变量或函数名 )
3 . : ts (ts 助记字: tags list, “:” 开头的命令为 VI 中命令行模式命令 )
4 . : tp (tp 助记字: tags 此命令不常用,可以不用记 à preview)—
此命令不常用,可以不用记 à 5 . : tn (tn 助记字: tags next) —
6 . Ctrl + ]
7 . Ctrl + T
下面我们逐条的解释上面的命令:
“$ ctags –R*” : “-R” 表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。 “*” 表示所有文件。这条命令会在当前目录下产生一个 “tags” 文件,当用户在当前目录中运行 vi 时,会自动载入此 tags 文件。 Tags 文件中包括这些对象的列表:
用 #define 定义的宏
枚举型变量的值
函数的定义、原型和声明
名字空间( namespace )
类型定义( typedefs )
变量(包括定义和声明)
类( class )、结构( struct )、枚举类型( enum )和联合( union )
类、结构和联合中成员变量或函数
VIM 用这个 “tags” 文件来定位上面这些做了标记的对象。
“$ ctags –R*” : “-R” 表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。 “*” 表示所有文件。这条命令会在当前目录下产生一个 “tags” 文件,当用户在当前目录中运行 vi 时,会自动载入此 tags 文件。 Tags 文件中包括这些对象的列表:
用 #define 定义的宏
枚举型变量的值
函数的定义、原型和声明
名字空间( namespace )
类型定义( typedefs )
变量(包括定义和声明)
类( class )、结构( struct )、枚举类型( enum )和联合( union )
类、结构和联合中成员变量或函数
VIM 用这个 “tags” 文件来定位上面这些做了标记的对象。
剩下的命令就是定位这些对象的方法:
“$ vi –t tag” :在运行 vim 的时候加上 “-t” 参数,例如:
[/usr/src]$ vim -t main
这个命令将打开定义 “main” (变量或函数或其它)的文件,并把光标定位到这一行。如果这个变量或函数有多处定义,在 VI 命令行模式 “ : ts” 命令就能列出一个列表供用户选择。 “ : tp” 为上一个 tag 标记文件, “ : tn” 为下一个 tag 标记文件。当然,若当前 tags 文件中用户所查找的变量或函数名只有一个, “:tp,:tn” 命令不可用。 :(
最方便的方法是把光标移到变量名或函数名上,然后按下 “Ctrl+]” ,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。用 “Ctrl+t” 可以退回原来的地方。即使用户使用了 N 次 “Ctrl+]” 查找了 N 个变量,按 N 次 “Ctrl+t” 也能回到最初打开的文件,它会按原路返回 。 ^_^
“$ vi –t tag” :在运行 vim 的时候加上 “-t” 参数,例如:
[/usr/src]$ vim -t main
这个命令将打开定义 “main” (变量或函数或其它)的文件,并把光标定位到这一行。如果这个变量或函数有多处定义,在 VI 命令行模式 “ : ts” 命令就能列出一个列表供用户选择。 “ : tp” 为上一个 tag 标记文件, “ : tn” 为下一个 tag 标记文件。当然,若当前 tags 文件中用户所查找的变量或函数名只有一个, “:tp,:tn” 命令不可用。 :(
最方便的方法是把光标移到变量名或函数名上,然后按下 “Ctrl+]” ,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。用 “Ctrl+t” 可以退回原来的地方。即使用户使用了 N 次 “Ctrl+]” 查找了 N 个变量,按 N 次 “Ctrl+t” 也能回到最初打开的文件,它会按原路返回 。 ^_^
注意:运行
vim
的时候,必须在
“tags”
文件所在的目录下运行。否则,运行
vim
的时候还要用
“:settags=”
命令设定
“tags”
文件的路径,这样
vim
才能找到
“tags”
文件。在完成编码时,可以手工删掉
tags
文件(帚把不到,灰尘不会自己跑掉
^_^
)。
注:另外,在
windows
下,有
gvim
可以使用。而且,也可以使用
ctags
。这个
ctags
可以从其它的软件包的目录里边
copy
出来。比如
ultraedit
就带了一个
ctags
程序。你直接将其
copy
到
gvim
的目录下的
vim
目录下就可以了