Fra*_*ang 0 c vim header-files
我发现当你想在linux下做一些事情时,在头文件之间导航是偶然的.例如,当我想找到某个东西的定义时struct sockaddr_storage.我现在正在做的是:!find /usr/include/ -type f | xargs grep " struct sockaddr ".它很强大,但对我来说并不令人信服.
是否有更简单的方法来浏览.h文件,如其他IDE,例如VStudio,提供?(几乎是C/CPP用户)ctags和cscope或tagbar是供项目使用的,在这种情况下它们能让我受益吗?
Vim可以跟随包含文件并找到定义它们的符号.为此,它使用了许多选项:
:help 'path'
:help 'include'
:help 'define'
Run Code Online (Sandbox Code Playgroud)
整个机制描述如下:help include-search.
在你的情况下,并假设你#include <sys/socket.h>在当前的缓冲区,你会做:
:ijump sockaddr_storage
Run Code Online (Sandbox Code Playgroud)
要么:
:isplit sockaddr_storage
Run Code Online (Sandbox Code Playgroud)
要么:
:isp /socka
Run Code Online (Sandbox Code Playgroud)
或者按下[I光标sockaddr_storage.
该默认值define对C选项只限于#define但它可以扩展到包括像struct,int等等.
:set define=^\\s*#*\\s*\\(define\\\|struct\\)
Run Code Online (Sandbox Code Playgroud)
这可以让你做类似的事情:
:dlist sockaddr_storage
Run Code Online (Sandbox Code Playgroud)
另一种选择显然是使用像ctags(:help ctags),gnu global或cscope(:help cscope)这样的代码索引器来索引你的项目和 /usr/include/.