1. ctags
.vimrc设置:
nmap <c-c> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> " 快捷键,生成tag文件
快捷键:
:tj <symbol> 如果只有一个定义,则跳转过去;如果有多个,则弹出列表给用户选择;
<c-]> 跳转到定义处
<c-t> 退回到跳转前
*/# 高亮所有出现的位置,并在位置间向前/向后跳转
gd 跳转局部变量的定义处
2. quickfix
快捷键:
:copen 打开quickfix窗口
:cclose 关闭quickfix窗口
:cfirst 跳转到第一项
:clast 跳转到最后一项
:cnext 跳转到下一项
:cprev 跳转到上一项
:cnfile 跳转到下一个文件的第一项
:cpfile 跳转到上一个文件的最后一项
:cc N 跳转到第N项
.vimrc配置:
# quickfix快捷键
nmap <f3> :cnext <CR>
nmap <f4> :cprev <CR>
3. cscope
Cscope缺省只解析C文件(.c和.h)、lex文件(.l)和yacc文件(.y)。
如果查找是C程序,使用以下命令生成scope的链接库cscope.out:
" -R 递归搜索子目录树中的文件
" -b cscope 只生成索引文件,不进入cscope的界面
" -k 不搜索/usr/include目录
" -q 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
$ cscope -Rbkq
$ ls -l
cscope.out
cscope.in.out
cscope.po.out
如果查找的是C++文件,则需要在cscope.files文件中列出所有文件的全路径。
find . -type f > cscope.files
cscope -bq
快捷键:
:cs add <database> 增加新的链接库
:cs show 显示scope的链接库
:cs find s <symbol>查找符号
:cs find g <symbol> 查找定义
:cs find d <funtion> 查找被这个函数调用的函数
:cs find t <string> 查找字符串
:cs find e <egrep> egrep查找
:cs find f <file> 查找文件
:cs find i <file> 查找#include这个文件的文件
查找的目标,<string>, <file>前后不需要加引号。如下是几个例子:
:cs find t socket error " 查找字符串"socket error", 前后不需要加任何引号
:cs find f base " 查找文件全路径中包含"base"的文件
:cs find i base " 查找#include "*base*"的文件
.vimrc配置
" 指定是否用quickfix窗口显示查找结果。
" 0 表示不使用quickfix窗口
" + 追加到之前的显示结果后面
" - 清空之前的显示结果
set cscopequickfix=s-,c-,d-,i-,t-,e-
4. grep
:grep <text> *
5. make
:make -C <directory> " 将build目录指定为make的参数
:setlocal makeprg=make\ -C\ <build_directory> " 直接定制makeprg。其中空格要用\转义
5. 格式化代码
=用来格式化代码。
:set expandtab 将所有tab转换成空格
=G 对当前行到文件结尾格式化
== 格式化当前行
10== 对当前行以下10行格式化
选择多行,执行= 格式化选择的行
相关链接
VIM 常用法 (一)
VIM 常用法 (二)
VIM 常用法 (三)
【转】ctags使用详解
参考资料
ctags使用详解
https://www.cnblogs.com/justkong/p/6265506.html
vim利器 - cscope
https://blog.csdn.net/magiclyj/article/details/79660259
网友评论