2012-01-04 79 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