vim配置进阶

目录
  1. 保存及应用工程配置
  2. 使用ctags
  3. 缓冲区及文件、tag查找
  4. cscope使用
  5. 自动刷新工程中的tags

保存及应用工程配置

  1. 设置vim搜索路径
    如set path=.,/usr/include,/usr/local/include,当使用find, gf, ctrl+W f(水平分割窗口打开)命令时vim会去path变量设置的目录下搜索.使用时可以把需要做的设置写到workspace.vim文件中,然后在打开工程的时候加载
  2. 保存vim session及viminfo
    使用会话(session)和viminfo,可以把你编辑环境保存下来,然后在你下次启动vim后,可以再恢复回这个环境。
    session
    会话(session)中保存了所有窗口的视图,外加全局设置。可以使用‘set sessionoptions’选项设定。缺省的‘sessionoptions’选项包括: “blank,buffers,curdir,folds,help,options,tabpages,winsize”
    command: 使用mksession [file]命令来保存session,使用source [file]命令来导入保存的session
    viminfo
    viminfo中保存了命令行历史(history)、搜索历史(search)、输入行历史、非空的寄存器内容(register)、文件的位置标记(mark)、缓冲区列表、全局变量等信息。
    command: 使用wviminfo [file]命令保存viminfo,使用rviminfo命令载入保存的viminfo
  3. 自动导入工程配置
    每次退出vim时都要手动保存viminfo及session文件,启动时再进行导入,岂不是很麻烦,如果能支持自动导入的话就very nice了。没问题,我们可以通过修改vimrc文件来实现这个目的.相关vimrc配置如下(可结合自身情况更改):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
" 设置自动加载当前目录的工程设置
if filereadable("workspace.vim")
source workspace.vim
endif
" 设置vim启动时自动读取session及viminfo信息
if filereadable("workspace.session")
source workspace.session
endif
if filereadable("workspace.viminfo")
rviminfo workspace.viminfo
endif
" 设置vim退出时自动保存工程配置
if filereadable("workspace.vim") "表示需要保存,防止不必要的保存
au VimLeave * mksession workspace.session
au VimLeave * wviminfo workspace.viminfo
endif

使用ctags

使用ctags命令:ctags -R . 命令生成tags文件,然后使用set tags=tags导入,可以使用vimrc设置自动导入

缓冲区及文件、tag查找

项目中,当打开的文件太多说,知道当前打开的文件名是一项有用的功能,这个可以通过minibufexpl实现,效果如下:
pic

vim中可以使用lookupfile插件进行tag, buffer, 文件及目录搜索,其对应的指令分别如下:

  • 缓冲区查找:LUBufs
  • 目录查找:LUWalk
  • tag查找:LUTags

cscope使用

如果你需求查找函数调用或者变量使用的地方,ctags就无能为力了,这时候就得用cscope了。
用法:
cscope默认只生成.c文件的索引,如果是c++或者java等其他语言,需要自行增加索引文件表。可以使用如下命令:
find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files
cscope -bkq -i cscope.files
然后在工程vim中执行: cscope add cscope.out,导入cscope索引。之后就可以使用cscope操作了,其操作命令如下:
man cscope或者vim中执行help cscope

1
2
3
4
5
6
7
8
cs find s ---- 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
cs find g ---- 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
cs find d ---- 查找本函数调用的函数
cs find c ---- 查找调用本函数的函数
cs find t ---- 查找指定的字符串
cs find e ---- 查找egrep模式,相当于egrep功能,但查找速度快多了
cs find f ---- 查找并打开文件,类似vimfind功能
cs find i ---- 查找包含本文件的文件

使用时,可以把cscope的查找结果输出到quickfix窗口,需要在~/.vimrc中加入下面这行:
set cscopequickfix=s-,c-,d-,i-,t-,e-
p.s:
打开quickfix —— copen
关闭quickfix —— cclose
查找下一个 —— cn
查找上一个 —— cp
浏览位置间跳转 —— ctrl+o(往前),ctrl+i(往后)

自动刷新工程中的tags

未完待续

可以点击my vimrc访问我的vimrc配置

本站总访问量