1
1楼 lutao 2008-12-14
准备标签
$ctags -R 生成一个cscope的数据库, 在项目的根目录运行下面的命令: $ find . ?type f > cscope.files $cscope ?bq Winmanager文件操作技巧: Winmannager: - 返回上级目录 c 切换vim 当前工作目录正在浏览的目录 d 创建目录 D 删除目录或文件 i 切换显示方式 R 文件或目录重命名 s 选择排序方式 x 定制浏览方式, 使用你指定的程序打开该文件 Cscope帮助阅读代码 进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令: :cs add /XXX/cscope.out /XXX 以调用“F1+字母”命令进行查找了。VIM支持8种cscope的查询功能,如下: s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方 g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能 d: 查找本函数调用的函数 c: 查找调用本函数的函数 t: 查找指定的字符串 e: 查找egrep模式,相当于egrep功能,但查找速度快多了 f: 查找并打开文件,类似vim的find功能 i: 查找包含本文件的文件 如果自动跳转的位置你不满意, 想看其他的结果, 可以用F6打开QuickFix窗口: Shift+F6关闭QuickFix窗口,Crtl+o返回上一级。 Taglist的基本操作 按下F3就会打开taglist窗口了,在其中可以使用下面的快捷键: o 在一个新打开的窗口中显示光标下tag u 更新taglist窗口中的tag s 更改排序方式,在按名字排序和按出现顺序排序间切换 x taglist窗口放大和缩小,方便查看较长的tag + 打开一个折叠,同zo - 将tag折叠起来,同zc * 打开所有的折叠,同zR = 将所有tag折叠起来,同zM [[ 跳到前一个文件 ]] 跳到后一个文件 q 关闭taglist窗口 编程常用技巧: Tab 自动补全 Ctrl+A 全选 Shift+o 建立新行但是不插入 % 跳转到配对的括号去 [[ 跳转到代码块的开头去(但要求代码块中'{'必须单独占一行) >> 缩进所有选择的代码 << 和上面类似,但是反缩进 gd 到达光标所在处函数或者变量的定义处。 K 在 Man 里面查找光标当前所在处的词。 '' 跳转到光标上次停靠的地方, 是两个', 而不是一个" :1,20s/^/#/g 连续行注释,注释第1行到第20行。(其中"^"表示在行首插入,"#"为要插 的字符,"g"表示执行替换时不确认) \cl 在结尾处加注/*XXX*/ \c* 将选中块加注释 F12 在行首加注释符 // Shift+F12 去掉行首两个字符,用于去掉注释符 F2 看与源文件同名的头文件 \cfr 写文件文档说明头 \cfu 写函数说明头 \cme 写方法说明头 \ccl 写类说明头 \cd 加入日期 \ct 加入日期和时间 F11 新建一个标签 Shift+F11 跳转标签 :r 文件名 直接将其他文件或命令执行内容导入当前文件中 (在注释中写入当前系统内核信息,只需:r !uname -a) v% = 在一遍的括号处按此组合键,括号中内容选定并按照C语言格式缩排, Shift+qq 快速不保存退出vi(所有的标签都会关闭) F10 快速打开同文件夹下的源文件,查找文件名可以用/ 编译: F5 Make Shift+F5 Make clean F6 列出所有编译信息 Shift+F6 关闭调试信息 F7 切换到下一个结果 Shift+F7 切换到上一个结果 F8 编译并运行单个文件 Shift+F8 调试源代码 \rc 保存并且编译 \rl 链接 \rr 运行 \ra 输入运行时的参数 \rm make \rg 输入make时的参数 \rp 代码检查 splint \ri 输入代码检查splint的参数 \rd或者Ctrl+F5 源代码 \rs 查看这个Csupport的设置 自动补全: Ctrl+X Ctrl+L 整行补全 Ctrl+X Ctrl+N 根据当前文件里关键字补全 Ctrl+X Ctrl+K 根据字典补全 Ctrl+X Ctrl+T 根据同义词字典补全 Ctrl+X Ctrl+I 根据头文件内关键字补全 Ctrl+X Ctrl+] 根据标签补全 Ctrl+X Ctrl+F 补全文件名 Ctrl+X Ctrl+D 补全宏定义 Ctrl+X Ctrl+V 补全vim命令 Ctrl+X Ctrl+U 用户自定义补全方式 Ctrl+X Ctrl+S 拼写建议 Csupport(c.vim)的常用结构补全操作: -- 常用结构 --------------------------------------------------------- \sd do { } while \sf for \sfo for { } \sif if { } \sife if { } else { } \swh while { } (n,v,i) \ss switch (n,v,i) \sc case (n,i) \s{ { } (n,v,i) -- 预处理命令 ------------------------------------------------------- \p< #include <> (n,i) \p" #include "" (n,i) \pd #define (n,i) \pu #undef (n,i) \pie #if #else #endif (n,v,i) \pid #ifdef #else #endif (n,v,i) \pin #ifndef #else #endif (n,v,i) \pind #ifndef #def #endif (n,v,i) \pi0 #if 0 #endif (n,v,i) \pr0 remove #if 0 #endif (n,i) \pe #error (n,i) \pl #line (n,i) \pp #pragma (n,i) -- 常用短语 ------------------------------------------------------------- \im main() (n,v,i) \i0 for( x=0; x \in for( x=n-1; x>=0; x-=1 ) (n,v,i) \ie enum + typedef (n,i) \is struct + typedef (n,i) \iu union + typedef (n,i) \ip printf() (n,i) \isc scanf() (n,i) \ica p=calloc() (n,i) \ima p=malloc() (n,i) \isi sizeof() (n,v,i) \ias assert() (n,v) -- C++ ---------------------------------------------------------------- \+c class (n,i) \+cn class (using new) (n,i) \+ci class implementation (n,i) \+cni class (using new) implementation (n,i) \+mi method implementation (n,i) \+ai accessor implementation (n,i) \+tc template class (n,i) \+tcn template class (using new) (n,i) \+tci template class implementation (n,i) \+tcni template class (using new) impl. (n,i) \+tmi template method implementation (n,i) \+tai template accessor implementation (n,i) \+tf template function (n,i) \+ec error class (n,i) \+tr try ... catch (n,v,i) \+ca catch (n,v,i) \+c. catch(...) (n,v,i)
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| ||||||||||||||||||||||||||||||||||||||||||||