社区
Linux_Kernel
帖子详情
vim+taglist+ctag为什么有时候定位不到某个函数或者宏的定义?
andevele
2012-04-06 03:16:01
比如说,在定位某个结构体名字时,将光标定位到需要定位的结构体的名字,然后ctrl+]开始定位时,却没有定位到这个结构体本身应该所在的文件,反而却转到了其他包含该结构体名字的地方。
这种情况经常会发生,虽然也有定位准的时候。
这让我开始对网上很多描述vim+ctags+taglist的相关描述产生了怀疑,我觉得配置没有问题,都是按照网上所说的一步步进行的,尝试了很多次。
你们也遇到过这样的?
...全文
348
5
打赏
收藏
vim+taglist+ctag为什么有时候定位不到某个函数或者宏的定义?
比如说,在定位某个结构体名字时,将光标定位到需要定位的结构体的名字,然后ctrl+]开始定位时,却没有定位到这个结构体本身应该所在的文件,反而却转到了其他包含该结构体名字的地方。 这种情况经常会发生,虽然也有定位准的时候。 这让我开始对网上很多描述vim+ctags+taglist的相关描述产生了怀疑,我觉得配置没有问题,都是按照网上所说的一步步进行的,尝试了很多次。 你们也遇到过这样的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
空明流光
2013-07-30
打赏
举报
回复
vim+ctags结构体与指针好像都无法定位的,郁闷了,还不如eclipse按一下F3就全解决了
moon_cat
2012-04-27
打赏
举报
回复
这个是正常的,这个是为了保证效率,你每次得自己更新tags文件,或者写入makefile就行。
mimi0213kimo
2012-04-09
打赏
举报
回复
g + ctrl + ] 列出所以可能
or cscope ctrl + \ + g
zengwujun
2012-04-06
打赏
举报
回复
我都用vim加grep搜索的
andevele
2012-04-06
打赏
举报
回复
举个例子吧,比如我的驱动程序中有i2c_client,然后移动光标到此,再ctr+]定位时,发现定位到了:
kernel/drivers/hwmon/ams/ams.h
但其实这个i2c_client的定义应该在:
kernel/include/linux/i2c.h中
所以这明显就是定位有错误
windows
vim
IDE搭建
完整的windows
vim
IDE搭建环境搭建,文档简单详细明了,安装文件很齐全,只要按照文档,不用5钟,windows
vim
IDE搭建就可以搭建完成,并且好用,所有的插件全了
c
tag
、cscope、
tag
list
、
函数
列表等,还有使用说明。我保证资源分10分很值。
vim
插件打包
vim
中~/.
vim
插件打包 ./
vim
rc文件内容为 "允许鼠标的使用,防止linux终端下无法拷贝 if has('mouse') set mouse=a endif au GUIEnter * simalt ~x "字体的设置 set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI "记住空格用下划线代替哦 set gfw=幼圆:h10:cGB2312 syn on "语法支持 syntax enable colorscheme desert filetype plugin on filetype indent on set nocompatible set history=5000 set autoread set mouse=a "common conf {{ 通用配置 set ai "自动缩进 set bs=2 "在insert模式下用退格键删除 set showmatch "代码匹配 set laststatus=2 "总是显示状态行 set expandtab "以下三个配置配合使用,设置tab和缩进空格数 set shiftwidth=4 set tabstop=4 "set cursorline "为光标所在行加下划线 set number "显示行号 set autoread "文件在
Vim
之外修改过,自动重新读入 set ignorecase "检索时忽略大小写 "set encoding=utf-8 fileencoding=utf-8 fileencodings=utf-8,latin1,ucs-bom,gb2312,gb18030,cp936,big5,euc-jp,euc-kr set fileencodings=utf-8,gb2312,gbk,gb18030,latin1,usc-bom,cp936,big5,euc-jp,euc-kr set termencoding=utf-8 set encoding=utf-8 set hls "检索时高亮显示匹配项 "set foldmethod=syntax "代码折叠 "}} "conf for plugins {{ 插件相关的配置 "状态栏的配置 "powerline{ set guifont=PowerlineSymbols\ for\ Powerline set nocompatible set t_Co=256 let g:Powerline_symbols = 'fancy' "} "pathogen是
Vim
用来管理插件的插件 "pathogen{ call pathogen#infect() "} "winmanager{ let g:winManagerWindowLayout='FileExplorer|
Tag
List
' "} "minibuffer{ let g:miniBufExplMapWindowNav
Vim
= 1 "} "grep " "omnicppcomplete { set
tag
s=
tag
s; "智能补全
c
tag
s -R --c++-kinds=+p --fields=+iaS --extra=+q let OmniCpp_NamespaceSearch = 1 let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_ShowPrototypeInAbbr = 1 " 显示
函数
参数列表 let OmniCpp_MayCompleteDot = 1 " 输入 . 后自动补全 let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全 let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全 let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] " 自动关闭补全窗口 au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif set completeopt=menuone,menu,longest set nocp "} "}} nmap
:WMToggle
"窗口间切换 nmap
:Dox
nmap
:bn
nmap
:only
nmap
:close
nmap
:AV
nmap
:!make
nmap
:!
tag
s
let g:template_autoload = 1 let g:bufExplorerMaxHeight=30 let g:miniBufExplorerMoreThanOne=0 let mapleader = "," let g:mapleader = "," map
1 =a{ nmap
1 =a{ nmap
"+yy nmap
"+p """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " CSCOPE settings for
vim
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " This file contains some boilerplate settings for
vim
's cscope interface, " plus some keyboard mappings that I've found useful. " " USAGE: " --
vim
6: Stick this file in your ~/.
vim
/plugin directory (or in a " 'plugin' directory in some other directory that is in your " 'runtimepath'. " " --
vim
5: Stick this file somewhere and 'source cscope.
vim
' it from " your ~/.
vim
rc file (or cut and paste it into your .
vim
rc). " " NOTE: " These key maps use multiple keystrokes (2 or 3 keys). If you find that
vim
" keeps timing you out before you can complete them, try changing your timeout " settings, as explained below. " " Happy cscoping, " " Jason Duell jduell@alumni.princeton.edu 2002/3/7 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " This tests to see if
vim
was configured with the '--enable-cscope' option " when it was compiled. If it wasn't, time to recompile
vim
... if has("cscope") """"""""""""" Standard cscope/
vim
boilerplate "set csprg=/usr/local/bin/cscope " use both cscope and
c
tag
for 'ctrl-]', ':ta', and '
vim
-t' set cscope
tag
" check cscope for definition of a symbol before checking
c
tag
s: set to 1 " if you want the reverse search order. set csto=0 " add any cscope database in current directory if filereadable("cscope.out") cs add cscope.out " else add the database pointed to by environment variable elseif $CSCOPE_DB != "" cs add $CSCOPE_DB else let cscope_file=findfile("cscope.out", ".;") let cscope_pre=matchstr(cscope_file, ".*/") if !empty(cscope_file) && filereadable(cscope_file) exe "cs add" cscope_file cscope_pre endif endif " show msg when any other cscope db added set cscopeverbose """"""""""""" My cscope/
vim
key mappings " " The following maps all invoke one of the following cscope search types: " " 's' symbol: find all references to the token under cursor " 'g' global: find global definition(s) of the token under cursor " 'c' calls: find all calls to the function name under cursor " 't' text: find all instances of the text under cursor " 'e' egrep: egrep search for the word under cursor " 'f' file: open the filename under cursor " 'i' includes: find files that include the filename under cursor " 'd' called: find functions that function under cursor calls " " Below are three sets of the maps: one set that just jumps to your " search result, one that splits the existing
vim
window horizontally and " diplays your search result in the new window, and one that does the same " thing, but does a vertical split instead (
vim
6 only). " " I've used CTRL-\ and CTRL-@ as the starting keys for these maps, as it's " unlikely that you need their default mappings (CTRL-\'s default use is " as part of CTRL-\ CTRL-N typemap, which basically just does the same " thing as hitting 'escape': CTRL-@ doesn't seem to have any default use). " If you don't like using 'CTRL-@' or CTRL-\, , you can change some or all " of these maps to use other keys. One likely candidate is 'CTRL-_' " (which also maps to CTRL-/, which is easier to type). By default it is " used to switch between Hebrew and English keyboard mode. " " All of the maps involving the
macro use '^
$': this is so " that searches over '#include
" return only references to " 'time.h', and not 'sys/time.h', etc. (by default cscope will return all " files that contain 'time.h' as part of their name). " To do the first type of search, hit 'CTRL-\', followed by one of the " cscope search types above (s,g,c,t,e,f,i,d). The result of your cscope " search will be displayed in the current window. You can use CTRL-T to " go back to where you were before the search. " "go there the symbol is exist nmap
s :cs find s
=expand("
")
nmap
g :cs find g
=expand("
")
nmap
c :cs find c
=expand("
")
nmap
t :cs find t
=expand("
")
nmap
e :cs find e
=expand("
")
nmap
f :cs find f
=expand("
")
nmap
i :cs find i ^
=expand("
")
$
nmap
d :cs find d
=expand("
")
" Using 'CTRL-spacebar' (intepreted as CTRL-@ by
vim
) then a search type " makes the
vim
window split horizontally, with search result displayed in " the new window. " " (Note: earlier versions of
vim
may not have the :scs command, but it " can be simulated roughly via: " nmap
s
:cs find s
=expand("
")
nmap
s :scs find s
=expand("
")
nmap
g :scs find g
=expand("
")
nmap
c :scs find c
=expand("
")
nmap
t :scs find t
=expand("
")
nmap
e :scs find e
=expand("
")
nmap
f :scs find f
=expand("
")
nmap
i :scs find i ^
=expand("
")
$
nmap
d :scs find d
=expand("
")
" Hitting CTRL-space *twice* before the search type does a vertical " split instead of a horizontal one (
vim
6 and up only) " " (Note: you may wish to put a 'set splitright' in your .
vim
rc " if you prefer the new window on the right instead of the left nmap
s :vert scs find s
=expand("
")
nmap
g :vert scs find g
=expand("
")
nmap
c :vert scs find c
=expand("
")
nmap
t :vert scs find t
=expand("
")
nmap
e :vert scs find e
=expand("
")
nmap
f :vert scs find f
=expand("
")
nmap
i :vert scs find i ^
=expand("
")
$
nmap
d :vert scs find d
=expand("
")
""""""""""""" key map timeouts " " By default
Vim
will only wait 1 second for each keystroke in a mapping. " You may find that too short with the above typemaps. If so, you should " either turn off mapping timeouts via 'notimeout'. " "set notimeout " " Or, you can keep timeouts, by uncommenting the timeoutlen line below, " with your own personal favorite value (in milliseconds): " "set timeoutlen=4000 " " Either way, since mapping timeout settings by default also set the " timeouts for multicharacter 'keys codes' (like
), you should also " set ttimeout and ttimeoutlen: otherwise, you will experience strange " delays as
vim
waits for a keystroke after you hit ESC (it will be " waiting to see if the ESC is actually part of a key code like
). " "set ttimeout " " personally, I find a tenth of a second to work well for key code " timeouts. If you experience problems and have a slow terminal or network " connection, set it higher. If you don't set ttimeoutlen, the value for " timeoutlent (default: 1000 = 1 second, which is sluggish) is used. " "set ttimeoutlen=100 endif
Ubuntu下创建
vim
+
Tag
list
+cscope+
c
tag
s组合编辑器
Ubuntu下创建
vim
+
Tag
list
+cscope+
c
tag
s组合编辑器 标签:
vim
ubuntu
tag
s正则表达式kill 2012-07-26 16:26 26831人阅读 评论(17) 收藏 举报 分类: Linux 系统安装、配置、编译&测评(12) 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 有人抱怨Linux系统下没有类似于VC
vim
+
c
tag
+
Tag
list
(转)
一、
c
tag
当然,第一步就是要下载它!一条命令搞定: $sudo apt-get install
c
tag
s 如果不幸提示找
不到
软件包
c
tag
s,首先你也许应该update一下你的软件源,还不行的话试试把
c
tag
s改成 exuberant-
c
tag
s 下载完了你就可以用它来产生我们的标签文件
tag
s 了,
tag
s文件是实现跳转功能的英雄,就是它把我们送到我们想要去的地方...
Linux 内核阅读工具
vim
+
c
tag
s+cscope+
tag
list
今天,我们了
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章