本文共 4382 字,大约阅读时间需要 14 分钟。
ctags -R -I THROW -I attribute_pure -I nonnull -I attribute --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/c.tag /usr/include/ --exclude=/usr/include/python2.7/
set tags+=~/.vim/tags/c.tag
ctags file_name1.c filename2.c filename3.h来产生ctags文件或者ctags .c .h
ctags默认使用这个命令,--exclude要排除的文件,--links针对符号链接是否延伸,使用-n参数表示用行号索引,一旦更改源文件行号容易变,需要重新生成ctags默认使用这个命令,--exclude要排除的文件,--links针对符号链接是否延伸,使用-n参数表示用行号索引,一旦更改源文件行号容易变,需要重新生成
在源码目录下通过命令make tags(也可使用:ctags -R)生成标签文件
cscope -Rbqk
k跳过/usr/include/*为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q其中:选项c++-kinds 用于指定C++语言的 tags记录类型, --c-kinds用于指定c语言的, 通用格式是 --{language}-kinds选项 fileds 用于指定每条标记的扩展字段域extra 选项用于增加额外的条目: f表示为每个文件增加一个条目, q为每个类增加一个条目如果经常在不同工程里查阅代码,那么可以在~/.vimrc中添加:
set tags=tags;
set autochdir
第一个命令里的分号是必不可少的,这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,就到父目录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。
vimgrep /匹配模式/[g][j] 要搜索的文件/范围
g: 表示是否把每一行的多个匹配结果都加入
j: 表示是否搜索完后定位到第一个匹配的位置
vimgrep /pattern/% 在当前打开文件中查找
vimgrep /pattern/ * 在当前目录下查找所有
vimgrep /pattern/ ** 在当前目录及其子目录下查找所有
vimgrep /pattern/ *.c 查找当前目录下所有的.c文件
vimgrep /pattern/ */ 只查找子目录
cn 查找下一个
cp 查找上一个vim file1 file2 file3 file4
或者进入vim后使用:e文档名来打开文档
:n 跳到后面那个文件
:N 跳到前面那个文件
:files查看打开了哪些文件
ctrl + n或者ctrl + p
gg 回到文件首
shift + v 进入VISUAL LINE模式
shift + g 全选所有内容
ctrl + v 复制所选的内容
quickfix功能将编译过程中产生的错误信息保存到文件中,然后vim利用这些信息跳转到源文件的对应位置,我们就可以进行错误的修正,之后跳到下一个错误重复上述操作,从而极大地提高编译错误的修改效率
quick常用命令:
:cc 显示详细错误信息
:cp 跳到上一个错误
:cn 跳到下一个错误
:cl 列出所有的错误
:copen 打开quickfix窗口,可以在后面添加窗口高度参数,如10行,:copen 10
:cclose 关闭quickfix窗口
第一步:在正常模式下(非insert模式、非visual模式)按下q键盘
第二步:选择a-z或0-9中任意一个作为缓冲器的名字,准备开始录制宏第三步:正常的操作,此次所有的操作都会被记录在上一步中定义的缓冲器中第四步:在非insert模式下输入q停止宏的录制第五步:使用@ + 第二步中定义的缓冲器的名字即可就可以使用录制的命令了。1、高亮所有搜索模式匹配,搜索
shift + * 向后搜索光标所在位置的单词
shift + # 向前搜索光标所在位置的单词
, # 可对光标处的词向前/向后做全词搜索,g, g# 做相对应的非全词匹配搜索
位置历史,打开历史的文件,前一个后一个Ctrl-O 在历史记录中后台,Ctrl-I 则为前进。:set hlsearch 高亮所有匹配的字符串
:nohlsearch 临时关闭
:set nohlsearch 彻底关闭,只有重新:set hlsearch才可以高亮搜索
3.:ts(列出符号的定义tselect的缩写):
:tj x 如果只找到一个符号定义,那么直接跳转到符号定义处,如果有多个,则让用户自行选择。4.:tp(前一个符号)---此命令不常用,可以不用记5.:tn(后一个符号) ---此命令不常用,可以不用记6.Ctrl+ ]跳到光标所在函数或者结构体的定义处7.Ctrl+ T返回上一个标签:stag TagName 新窗口分屏窗口显示TagName标签,光标跳到标签处
Ctrl+W + ] 新窗口分屏窗口显示当前光标下单词的标签,光标跳到标签处以下命令将在分屏预览窗口显示标签
:ptag TagName 预览窗口显示TagName标签,光标跳到标签处:pclose 关闭预览窗口:pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时很有用):psearch atoi 查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用。:n 跳到后面那个文件
:N 跳到前面那个文件:files查看打开了哪些文件:file 查看当前的文件名即简单地补全到本文档中已有的词:vim自动补全ctrl + n(第一个)或者ctrl + p(最后一个)
此时有一些快捷键可以用:Ctrl+P 向前切换成员Ctrl+N 向后切换成员Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字Ctrl+Y 表示退出下拉窗口, 并接受当前选项vim中的其他补全方式还有:全局搜索
Ctrl+XCtrl+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 拼写建议15、vim的recording功能
第一步:在正常模式下(非insert模式、非visual模式)按下q键盘
第二步:选择a-z或0-9中任意一个作为缓冲器的名字,准备开始录制宏第三步:正常的操作,此次所有的操作都会被记录在上一步中定义的缓冲器中第四步:在非insert模式下输入q停止宏的录制第五步:使用@ + 第二步中定义的缓冲器的名字即可就可以使用录制的命令了。g + ] 可以查看当前函数的所有位置的定义
q: 显示vim命令历史17、块选择
v 会将光标经过的地方反白选择y将反白的地方复制d将反白的地方删除字符串替换
语法:[addr]s/源字符串/目的字符串/optionoption(g表示全局替换,c表示替换前进行确认)如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义全局替换,:%s/源字符串/目的字符串/g
从当前行到文件尾替换,:.,$%s/源字符串/目的字符串/g
从第n行到文件尾替换,:n,$%s/源字符串/目的字符串/g
vim的快捷键
% 跳转到配对的括号去
[[ 跳转到当前或者上一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)][ 跳转到当前代码块(函数定义、类定义等)的结尾去(但要求代码块中'{'必须单独占一行)]] 跳转到下一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)gd到局部变量的定义,gD到全局变量的定义
‘’ 跳转到光标上次停靠的地方, 是两个', 而不是一个"mx 设置书签,x只能是a-z的26个字母x 跳转到书签处("
"是1左边的键) 缩进
插入模式
Ctrl-T增加缩进,Ctrl-D减小缩进。命令模式
右缩进, << 左缩进,注意n<< 或 n>>是缩进多行,如4>>
可视模式
< 、 > 用于左右缩进, n< 、 n> 可做多节缩进,如 2> 。另外,= 可对选中的部分进行自动缩进;]p可以实现p的粘贴功能,并自动缩进。返回上级目录
c切换vim当前工作目录正在浏览的目录d创建目录D删除目录或文件i切换显示方式R文件或目录重命名s选择排序方式x定制浏览方式,使用你指定的程序打开该文件转载于:https://blog.51cto.com/11325959/2330890