每次在Vim中加載cscope.out後,我需要將Vim的「pwd」更改爲cscope.out文件所在的目錄,這可能是由於cscope在生成標記文件時使用相對路徑。因此,如果有一種方法可以強制cscope在其標記文件中使用絕對路徑--cscope.out,那麼無論您的Vim會話的pwd是否與cscope.out文件所在的目錄相同,都是如此。如何讓cscope在cscope.out文件中使用絕對路徑?
回答
當導入cscope.out中,你可以提供前綴,即
:cscope add /path/to/cscope.out /path/to/src/code
那麼你的搜索會變成像:
Cscope Tag: foobar
# line filename/context/line
1 21 /path/to/src/code/foobar_file.c
@Aaron H.是正確的。
對於我的配置我用cscope_maps.vim插件並修改了以下行:
40 " add any cscope database in current directory
41 if filereadable("/usr/project/cscope.out")
42 cs add /usr/project/cscope.out /usr/project
43 " else add the database pointed to by environment variable
44 elseif $CSCOPE_DB != ""
45 cs add $CSCOPE_DB
46 endif
去哪兒「在/ usr /項目」是我想要的cscope.out中文件的位置和絕對路徑使用。
的cscope tutorial有針對此問題一個非常簡單的解決方法:
11.Try設置
$CSCOPE_DB
環境變量指向創建Cscope的數據庫,這樣你就不會總是需要啓動vim以 與數據庫相同的目錄。這對於代碼被拆分成多個子目錄的 項目特別有用。注: 這個工作,你應該建立具有絕對路徑的數據庫: cd到/,並做find /my/project/dir -name '*.c' -o -name '*.h' > /foo/cscope.files
然後在同一目錄中cscope.files文件運行Cscope的(或使用 通過「cscope -i /foo/cscope.files'),則設置並導出$ CSCOPE_DB 變量,它指向該產生的cscope.out中文件):
cd /foo cscope -b CSCOPE_DB=/foo/cscope.out; export CSCOPE_DB
(最後的命令以上對於Bourne /光輝/ Bash shell:我忘記了 如何導出基於csh的shell中的變量,sin我避免他們像瘟疫 )。
你現在應該可以在你的 機器上的任何目錄下運行'vim -t foo',讓Vim直接跳到'foo'的定義。我傾向於 爲我的所有不同的項目編寫小shell腳本(只是定義和導出CSCOPE_DB),這使我可以通過 簡單的'source projectA'命令在它們之間切換。
您可以使用您的cscpoe.files絕對路徑到您的文件,這裏是我的腳本來生成我cscope的數據庫
#!/bin/sh
find $PWD -name '*.[ch]' -exec echo \"{}\" \; | sort -u > cscope.files
cscope -bvq
然後,只需VIM cscope.files,也許:CS添加cscope.out中,儘管我的cscope插件可以自動完成。然後我搜索我感興趣的文件並用gf跳到它們。
您可以讓vim解釋cscope中的路徑。通過設置cscoperelative
選項將相對於設置爲cscope.out文件的位置。 從:help csre
:
如果「cscoperelative」被設置,那麼在沒有給予 cscope的前綴的(前綴是-P選項的cscope的參數), cscope.out中位置的基名(通常是項目根目錄)將被用作前綴來構造一個絕對路徑 。默認是關閉的。 注意:此選項僅在cscope(cscopeprg)爲 時未使用前綴路徑(-P)進行初始化時有效。
例子
:設置csre
:nocsre設置
這應該是真正被接受的答案,因爲從vim + cscope的角度來看是迄今爲止最簡單的解決方案。謝謝您的回答! – janjust 2016-02-01 17:05:46
注:因爲我沒有足夠的資深添加評論: 亞倫和NEHA的答案是有用的我更多地瞭解了整個系統,但這個問題的最好和最直接的答案目前排在第三位,是沙燕的。
提問者更要求有關cscope的獲取絕對路徑,不使用(非常有能力和強大)VIM圍繞它的工作。
注2:還有另外一種方法,使vim的一個變化,完成相同的東西NEHA一樣。
:set cscopeprg=cscope -P path_to_relative_base
我喜歡NEHA的更好,但這種方式更接近於修改cscope的,而不是vim的設置,如果這是你想要的。這是允許您將cscope數據庫移到任何地方的唯一方法。
- 1. 如何在ant中使用絕對路徑來刪除文件?
- 2. 使用絕對路徑打開文件
- 3. 絕對文件路徑
- 4. 如何從QDir和相對文件路徑創建絕對文件路徑?
- 5. python/zip:如果提供絕對路徑文件,如何消除zip壓縮文件中的絕對路徑?
- 6. cscope:cscope錯誤:cscope:無法從文件讀取列表大小cscope.out
- 7. 如何使絕對路徑HTTP在golang
- 8. 在Python中獲取絕對文件路徑的目錄路徑
- 9. 如何使用JavaScript或...獲取文件絕對路徑?
- 10. 如何使用絕對路徑從Java運行Python文件?
- 11. 如何使用Delphi獲取INI文件的絕對路徑?
- 12. 如何使用tkFileDialog獲取文件的絕對路徑?
- 13. 如何使用絕對路徑加載svg文件
- 14. 在FreeMarker中使用絕對路徑
- 15. 如何在Eclipse中使用插件獲取項目文件的絕對路徑
- 16. print cscope的符號鏈接的絕對路徑
- 17. 從絕對路徑中刪除文件
- 18. strace中只有絕對文件路徑?
- 19. qmake pro文件中的絕對路徑
- 20. 使用絕對路徑,FileNotFoundError
- 21. 如何在css網址中使用相對/絕對路徑?
- 22. 如何用文件中的絕對路徑替換變量值?
- 23. 如何在Delphi中從絕對路徑獲取文件的URL?
- 24. 在Unix中,如何以絕對路徑名創建文件
- 25. 如何在Hadoop文件系統中獲得絕對路徑?
- 26. 在Django中上傳後如何獲取文件絕對路徑?
- 27. 相對URL的絕對文件路徑
- 28. 的Python:絕對路徑相對讓到另一條路徑
- 29. Eclipse插件文件夾絕對路徑
- 30. 如何使用剃刀在umbraco中獲取絕對媒體文件路徑?
另外,在腳本運行的相同目錄中運行'export CSCOPE_DB = $(pwd)/ cscope.out' – Paschalis 2015-01-22 10:13:46