Vim的cscope连接断开每个GNU屏幕重新连接

时间:2012-01-04 21:11:12

标签: vim freebsd gnu-screen cscope

我在C开发环境中使用vim运行cscope。我在freebsd 6.3服务器上的GNU vim窗口内启动screen,并与cs add ...建立cscope数据库连接。在这个阶段,一切都完美无瑕。

如果我分离屏幕会话并重新连接它,任何使用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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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 "$@"

其中说“如果没有从tty,假的TERM”运行。 tty测试是尽量避免破坏交互式使用。您也可以尝试TERM=none或其他值。