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/ html
set tags+=~/.vim/tags/c.tagpython
ctags file_name1.c filename2.c filename3.h来产生ctags文件或者ctags .c .hlinux
ctags默认使用这个命令,--exclude要排除的文件,--links针对符号连接是否延伸,使用-n参数表示用行号索引,一旦更改源文件行号容易变,须要从新生成请添加连接描述ctags默认使用这个命令,--exclude要排除的文件,--links针对符号连接是否延伸,使用-n参数表示用行号索引,一旦更改源文件行号容易变,须要从新生成请添加连接描述c++
在源码目录下经过命令make tags(也可以使用:ctags -R)生成标签文件 shell
cscope -Rbqk
k跳过/usr/include/*vim
为了使得字段补全有效,在生成tags时须要一些额外的参数,推荐的c++参数主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
选项c++-kinds 用于指定C++语言的 tags记录类型, --c-kinds用于指定c语言的, 通用格式是 --{language}-kinds
选项 fileds 用于指定每条标记的扩展字段域
extra 选项用于增长额外的条目: f表示为每一个文件增长一个条目, q为每一个类增长一个条目python2.7
若是常常在不一样工程里查阅代码,那么能够在~/.vimrc中添加:ide
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中止宏的录制
第五步:使用@ + 第二步中定义的缓冲器的名字便可就可使用录制的命令了。
一、高亮全部搜索模式匹配,搜索
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 拼写建议
1五、vim的recording功能
第一步:在正常模式下(非insert模式、非visual模式)按下q键盘
第二步:选择a-z或0-9中任意一个做为缓冲器的名字,准备开始录制宏
第三步:正常的操做,这次全部的操做都会被记录在上一步中定义的缓冲器中
第四步:在非insert模式下输入q中止宏的录制
第五步:使用@ + 第二步中定义的缓冲器的名字便可就可使用录制的命令了。
g + ] 能够查看当前函数的全部位置的定义
q: 显示vim命令历史
1七、块选择
v 会将光标通过的地方反白选择
y将反白的地方复制
d将反白的地方删除
字符串替换
语法:[addr]s/源字符串/目的字符串/option
option(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
定制浏览方式,使用你指定的程序打开该文件
ctags 对shell语言的支持
vim+ctags+cscope安装与使用总结(不断补充中)
vim 中Ctags的安装和使用
vim+cscope+ctags打造属于本身的IDE
一份比较好用的vim配置文件
Vim的强大配置文件(一键配置)
ctags实践总结
ctags使用方法 ctags的使用方法
Exuberant Ctags中文手册
超详细的vim+cscope 的使用规则
VIM 的 modeline 和 autocmd
Ubuntu 16.04 下 Vim安装及配置
vim源码阅读工具 ctags cscope 和 Source Insight