我正在使用Solaris上的+ 1M LOC C/C++项目(远程,通过VNC或SSH).我在本地计算机上也有每日更新的源代码副本(Windows,仅用于浏览代码).
我使用VIM和ctags组合(在Solaris和Windows上),但我对结果/速度不满意.你会推荐什么样的ctags设置?应该标记什么以及如何标记有很多选项.我应该为每个项目,每个目录使用单个标记文件,还是只为每个项目使用一个?
以下命令工作正常:
$>cscope -b -R
Run Code Online (Sandbox Code Playgroud)
但是,反向索引的选项不起作用:
$>cscope -b -q -k -R
Input file specified two times.
cscope: cannot create inverted index; ignoring -q option
cscope: removed files ncscope.in.out and ncscope.po.out
Run Code Online (Sandbox Code Playgroud)
我用Google搜索了一下,发现了一些点击.但找不到任何答案或解决方案.任何见解都非常感谢.
我有C源代码,它有很多#ifdef ANSI宏.
例如,
#ifdef ANSI
int test
(
int a
)
#else
int test(a)
int a;
#endif
Run Code Online (Sandbox Code Playgroud)
因此,如果我使用cscope + vim和上面的源代码来导航test(),它总是显示相同的两个符号.(所以我必须选择两个相同的符号名称之一.这非常烦人)
cscope是否可以只生成一个符号(仅在#ifdef ANSI中生成符号)?
我正在寻找一种方法来cscope从Vim查询输出查询.
以下对我不起作用:
:cs f s symbol !grep pattern
Run Code Online (Sandbox Code Playgroud)
它给了:
E259: no matches found for cscope query s symbol !grep pattern ...
Run Code Online (Sandbox Code Playgroud)
PS:
我知道redir方法,我正在寻找一种更简单的方法来
通过Unix命令过滤ex命令的输出.
我在emacs和vim中最想念的IDE功能是代码导航和查找用法.这两个编辑器都具有以下类似功能:
据我了解,这两个系统都非常不精确.如果我们有相同名称的相似标识符,则标记和范围可能会混淆它们.有没有更好的选择,它们究竟有多精确?
当我通过发出make cscopeI get database file以及具有相对路径的文件列表来生成Linux内核cscope数据库时.这对我来说是一个问题,因为稍后当我在vim编辑器中从任何目录附加外部内核的数据库但内核我可以轻松搜索特定符号但是我无法打开包含该符号的文件.
我写了下一个bash脚本
#!/bin/bash
SNAME="$0"
SNAME=${SNAME##*/}
function usage()
{
echo Generate Linux kernel cscope database
echo "Usage: $SNAME [PATH]"
echo -n "You must provide this script with an ABSOLUTE path of your "
echo "kernel's root directory"
}
if [[ -z "$1" ]]; then
usage
exit -1
fi
KDIR="$1"
echo -n "Collecting a list of files... "
if find "$KDIR" -path "${KDIR}/arch/*" ! -path "${KDIR}/arch/x86*" -prune -o \
-path "${KDIR}/include/asm-*" \ …Run Code Online (Sandbox Code Playgroud) 我已经安装了ctags但没有安装cscope.
当我按下Ctrl-]时,vim正确地将我带到了定义.但是,当我按下Ctrl-t时,它会回复错误 - "E567:没有cscope连接".
vim --version里面有+ cscope.我尝试在我的vimrc中设置"set nocst",但无济于事.
我面临着一个奇怪的问题.在浏览项目的C代码时,"查找此文本字符串:"输出会产生正匹配,但文本不可见[只有搜索结果不可见而不是菜单].光标在结果列表中上下移动.有些线条有时可见,您可以在下面的屏幕截图中看到.我确实尝试更改背景颜色[从黑色到白色],删除项目文件夹中的任何cscope.out实例,重建数据库.
该系统是FC4.使用的cscope版本是15.7a.
这是一个已知的错误?有解决方案吗
屏幕截图:使用Putty拍摄屏幕截图.在gnome-terminal,konsole上可以看到相同的行为.
http://img2.pict.com/05/11/00/2823072/0/cscope01.jpg
http://img2.pict.com/53/0e/38/2823075/0/cscope02.jpg
PS:也发布在ubuntu论坛 - http://ubuntuforums.org/showthread.php?t=1402448
我通常用cscope从c方法挖掘方法到方法超过4-5级,我必须在方法之间来回切换.
如何在cscope中查看搜索历史记录,以便我不必记住以前的方法名称.或者如果它是一个堆栈会更好.
我为我的项目生成了ctags:
ctags -f /home/grae/tags --recurse --langmap=C++:.C.h.c.cpp.hpp.inl --languages=C++ --extra=+q --fields=+iaS --c++-kinds=+p --verbose framework/ modules/ /usr/include/
Run Code Online (Sandbox Code Playgroud)
然后我将标签添加到.vimrc:
set tags+=/home/grae/tags
Run Code Online (Sandbox Code Playgroud)
我还暂时添加了以下内容(但现已删除):
set csto=1
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试Ctrl +]或g]时,我收到错误:
cstag:找不到标签
我不应该使用cscope,所以我不确定这是怎么发生的.我目前的想法是:
* cscope on by default
* something has overriden Ctrl+] and g]
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?