Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4611732
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: LINUX

2006-12-26 15:11:56

 使用code-gvim模块语法高亮

该模块的使用和code-highlight类似,只需要在编译时加如选项-m code-gvim -X2,不需要额外安装配置(当然,此时系统中应当有gvim)。

相比而言,code-gvim的语法加亮能力强大得多,能根根据gvim的配置进行语法加亮,本文中的所有程序代码就是使用code-gvim模块进行操作的。

这里,获得syntax名称的方法是,用vim打开某代码文件,输入

1  :help filetype?

即可得到该代码的语法格式名称。
3.4 加亮后的C++代码示例

1  #include

2  using namespace std;
3  int main(void)
4  {

5      cout << "Hello, world!" << endl;
6      return 0;
7  }

1 -m 表示模块加载,autospace用来在英文单词两边加空格,zh-cn为GB2312编码。

2 -X 参数表示允许deplate执行外部命令(eg. gvim, highlight)
Edited with Vim and Viki, created with Deplate. Copyleft © 2005 Howard Gu


cscope


我配完之后有一个小问题:Cscope里对split window query mode的键盘绑定是Ctrl-Blankspace,对于中文用户来说,这一般也是中文输入法的short-key。这就需要修改 ~/.vim/plugin/cscope_maps.vim文件,把其中对ctrl+blankspace(在vim中表示为ctrl+@)的绑定修改为你特性的组合键。


在vim中使用cscope查找调用、定义函数和变量的地方
    在vim中用了一阵子ctags,确实美中不足。ctags只能根据调用函数的地方查找定义该函数的地方,不能根据定义函数的地方查找都有哪些地方调用了该函数。于是又学习了cscope。Cscope在主页上说它具有毋庸置疑的UNIX血统,早在PDP-11的时代就已经在贝尔实验室开发出来了。我的 Linux是SuSE10.0,系统自带的有cscope软件。
一、将另存为文件~/.vim/plugin/cscope_maps.vim
二、因为cscope将“ctrl+空格”作为映射键,但是这样会调出输入法,因此将~/.vim/plugin/cscope_maps.vim文件中的替换为(或者是你没有映射过的你喜欢的快捷键)
三、进入C语言源代码目录,建立符号表:
mishuang@msh:~/linux/linux0.11/source-0.11> cscope -R
ctr-D退出后,当前目录会多一个文件cscope.out,这个文件比tags大多了。
四、使用指南
1)使用下面的命令直接进入main函数定义的地方,如果有多个的话,输入索引号,回车。
mishuang@msh:~/linux/linux0.11/source-0.11> vi -t main
2)将光标停留在一个函数上,"ctrl+\"再输入s,这样就会出现所有调用、定义该函数的地方,输入索引号,回车即可。
3)将光标停留在一个函数上,再输入s,这样就会出现所有调用、定义该函数的地方,输入索引号,回车后会以水平方式在另外一个窗口显示。
4)将光标停留在一个函数上,再输入s,这样就会出现所有调用、定义该函数的地方,输入索引号,回车后会以垂直方式在另外一个窗口显示。
五、结合ctags使用效果会更好。其他使用方法请参考文献[2],

参考文献:
1) 用vim+scope看linux  kernel
2) vim+scope使用安装方法

用tags/cscope看内核源代码-HOWTO    


其实内核原代码的Makefile就包含了make tags/TAGS的选项,
但是生成的tags太大,因为包含了drivers等不常用的目录。

因此参照内核的Makefile文件,写了一个Makefile,
用来生成ctags/cscope/etags。

这样,可以根据自己的需要,删除和添加目录。

我以前没有用过tags/cscope,不知道有没有更好的方法。欢迎指教。
也请大家补充tags/cscope的常用的和好用的命令,技巧。

一、用法

找一个空目录,把附件Makefile拷贝进去。
然后在该目录中选择性地运行如下make命令:

注:SRCDIR用来指定内核源代码目录,如果没有指定,
则缺省为/usr/src/linux/,如

$ make

将处理/usr/src/linux下的源文件,在当前目录生成ctags, cscope


1) 只创建ctags

$ make SRCDIR=/usr/src/linux-2.6.12/ tags

2) 只创建cscope

$ make SRCDIR=/usr/src/linux-2.6.12/ cscope

3) 创建ctags和cscope

$ make SRCDIR=/usr/src/linux-2.6.12/

4) 只创建etags

$ make SRCDIR=/usr/src/linux-2.6.12/ TAGS


二、处理时包括的内核源文件:

1) 不包括drivers,sound目录
2) 不包括无关的体系结构目录
3) fs目录只包括顶层目录和ext2,proc目录

对2.6.12.1内核,这样生成的tags大约12M,cscopes大约19M

三、最简单的ctags命令

----------------------
1) 进入

进入vim后,用

:tag func_name

跳到函数func_name

----------------------
2) 看函数(identifier)

想进入光标所在的函数,用

CTRL + ]

----------------------
3) 回退

回退用

CTRL + T

----------------------


我现在只会用这几个命令,请大家说说其他常用的命令。



五月的鲜花开遍了原野,
鲜花掩盖着志士的鲜血。

Post Extras: Print Post   Remind Me!   Email Post   Notify Moderator
wheelzModerator
(old hand)
05-08-23 13:11
   
[] Re: 用tags/cscope看内核源代码-HOWTO [re: wheelz]   
Reply to this postReply

查找标识符

:tag write_

找到以write_开头的标识符,如果有多个,继续按,直到找到想要的。


如果想跳到包含block的标识符

:tag /block

然后用来选择。

这里'/'就是告诉vim'block'是一个pattern。

如果想在以write_开头的标识符中选择一下,

:tselect /^write_

这里,'^'表示开头,同理,'$'表示末尾。


五月的鲜花开遍了原野,
鲜花掩盖着志士的鲜血。

Post Extras: Print Post   Remind Me!   Email Post   Notify Moderator
wheelzModerator
(old hand)
05-08-23 13:22
   
[] Re: 用tags/cscope看内核源代码-HOWTO [re: wheelz]   
Reply to this postReply

多个同名的标识符

如果某个函数有多个定义,':tag'命令会跳到第一个,如果当前文件有,则优先用这个。
然后可以跳到下一个同名的
:tnext

跳到第一个
:tfirst

跳到前count个
:[count]tprevious

跳到后count个
:[count]tnext

跳到最后一个
:tlast


你也可以在所有tagname中选择:
:tselect tagname

 

阅读(5370) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

_xiaoying2015-04-05 16:31:08

学习了