Vim的cscope在每次重新连接GNU screen后会断开连接

3
我在C开发环境中使用cscope来运行vim。我在freebsd 6.3服务器上的GNUscreen窗口中启动vim,并使用cs add ...建立cscope数据库连接。在此阶段,一切都运行良好。
但是,如果我分离屏幕会话并重新连接它,任何尝试使用cscope都会导致cscope崩溃。由于我的cscope未编译调试符号,这是我从核心转储中得到的全部信息。
(gdb)
#0  0x480f45dc in ungetch () from /lib/libncurses.so.6
(gdb)

据我所知,当我重新连接到屏幕时,在vim上不需要重新建立cscope连接。这将击败使用屏幕的目的。有人知道发生了什么事情,是否有解决方法?如果一切都失败了,我会找时间编译带符号的cscope并弄清楚发生了什么。
如果有帮助的话,我的cscope数据库是这样生成的:
cscope -bkq -P`pwd` -i cscope.files
2个回答

3
原来,这是在cscope 15.7a中解决的问题。我在这里回答以防其他人也遇到了同样的问题(在我决定发布之前困扰了我几年)。

好的,我想我需要等几个小时。 - jman

2

考虑到它在curses中崩溃,尽管vim将要调用cscope -l(行模式),我认为合理地猜测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或其他值。


我会检查一下并在这里发布,看起来可能就是它了! - jman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接