2012-01-04 76 views
3

我在我的C开发环境中运行vimcscope。我在freebsd 6.3服务器的GNU screen窗口中启动vim,并使用cs add ...建立cscope db连接。在这个阶段,一切都完美无瑕。Vim的cscope连接在每个GNU屏幕上重新连接

如果我分离屏幕会话并重新附加它,任何使用cscope的尝试都会导致cscope转储核心。这是我从核心转储有,因为我的cscope不使用调试符号编译:

(gdb) 
#0 0x480f45dc in ungetch() from /lib/libncurses.so.6 
(gdb) 

AFAIK就没有必要当我重新安装到屏幕上重新建立对VIM cscope的连接。这会挫败使用屏幕的目的。任何人都知道发生了什么,如果有解决方法?如果一切都失败了,我会抽出时间用符号编译cscope并找出发生了什么。

如果有帮助,我的cscope的DB与生成:

cscope -bkq -P`pwd` -i cscope.files 

回答

3

原来,这是固定在cscope的15.7a的问题。在这里发布答案,以防其他人有同样的问题(在我决定在这里发布之前,这让我困扰了几年)。

+2

您能否将您的答案标记为已接受?它影响索引并使其更容易找到。 – richo 2012-01-06 01:05:27

+0

会这么做,我想我需要等几个小时。 – jman 2012-01-06 19:53:30

2

鉴于即使vim要调用cscope -l(行模式),它仍然在curses中崩溃,我认为猜测TERM=screen与您的问题有关是合理的。我想尝试做一个包装(例如在$HOME/bin,假设在你的路径/usr/local/bin之前的)去改变它:

#!/bin/sh 

if ! test -t 0 
then 
    TERM=vt100 
fi 

exec /usr/local/bin/cscope "[email protected]" 

它说“如果不从一个tty,假周期运行”。 tty测试是为了避免突破交互式使用。您也可以尝试TERM=none或其他值。

+0

我会检查这个和张贴在这里,似乎这可能是它! – jman 2013-03-02 01:53:13