看板 Linux 關於我們 聯絡資訊
請教大家 我在 linux/ 目錄下建立cscope.out 但我不一定每次編輯檔案都從 linux 目錄下開始 例如 我有可能位於 linux/drivers/mmc/card 下 vim block.c 此時 vim 並不會找到位於 linux 目錄下的cscope.out 於是 我必須手動下:cs add ../../../cscope.out ../../../ cscope資料庫才建立起來 為了解決這個問題, 我在 cscope_maps.vim 修改了 讓一開始會一直往上一層目錄找 cscope.out 檔案 摘錄如下 if has("cscope") 略 let PATH_DB_CSCOPE = findfile("cscope.out", ".;") let DIR_DB_CSCOPE = finddir("linux", ".;") " add any cscope database in current directory if filereadable("cscope.out") cs add cscope.out " Searches from the directory of the current file upwards elseif !(empty(PATH_DB_CSCOPE)) execute "cs add " . PATH_DB_CSCOPE . " " . DIR_DB_CSCOPE " else add the database pointed to by environment variable elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif 請問 我有辦法把 PATH_DB_CSCOPE 變數 濾掉檔案名cscope.out 存入 DIR_DB_CSCOPE 嗎? 查了一下 vim 好像沒有這樣功能的function 如果用shell 下的 dirname,又不知如何在vim script下呼叫 請問有什麼比較好的解法呢? 感謝看完這篇冗長文章的人 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.66.17.92
powentan:可以試試看fnamemodify(PATH_DB_CSCOPE, ":h") 12/16 22:27
freakguy:謝謝p大的提示,問題已解決。 12/16 23:12