2006-11-17, 02:07 PM
|
#1
|
|
普通会员
注册日期: 2006-07-21
帖子: 41
精华: 0
现金: 139 金币
资产: 139 金币
声望: 10 
|
vim 和 ctags日记一则
|
关于vim 的使用方法网上有很多,其中都出自于官方的vimdco文档。
这里我说一些关于vim扩展性的东西。
ctags的使用
1 $ ctags -R
“-R”表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。“tags”文件中包括这些对象的列表:
2 用#define定义的宏
枚举型变量的值
函数的定义、原型和声明
名字空间(namespace)
类型定义(typedefs)
变量(包括定义和声明)
类(class)、结构(struct)、枚举类型(enum)和联合(union)
类、结构和联合中成员变量或函数
3 $ vim -t foo_bar
这个命令将打开定义“foo_bar”(变量或函数或其它)的文件,并把光标定位到这一行。
4 在vim编辑器内用“:XX”命令,例如:
:cstag main 列出所有main所在位置
:ta foo_bar 跳转到foo_bar函数位置
5 把光标移到变量名或函数名上,然后按下“Ctrl-]”。用“Ctrl-o”退回原来的地方。
还有一个工具能自动将代码整理成gnu的风格
indent filename
vim
在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平台的版本。
我的.vimrc 文档
=========================================================
1 :syntax enable "显示彩色
2 set ai "自动缩进
3 set nu "显示行号
4 set showmatch "显示括号配对
5 set si "smart indent 括号自动对齐
6 set cindent "设置C格式缩进
7 set wm=5 "设置右边距
8 "set wrap "长行自动折行
9 "====tags======
10 set tags=tags
11
12 "括号自动配对,并把光标定义到两个括号中间
13 :inoremap ( ()<ESC>i
14 :inoremap ) <c-r>=ClosePair(')')<CR>
15 :inoremap { {}<ESC>i
16 :inoremap } <c-r>=ClosePair('}')<CR>
17 :inoremap [ []<ESC>i
18 :inoremap ] <c-r>=ClosePair(']')<CR>
19
20 function ClosePair(char)
21 if getline('.')[col('.') - 1] == a:char
22 return "\<Right>"
23 else
24 return a:char
25 endif
26 endf
=======================================================
vim还有很多妙用,偶才疏学浅,尚还不能领会到其中的一些奥妙。还多多指点。
|
|
|
|