數(shù)字前端設(shè)計(jì)流程中,.lib后綴的文件通常是 Synopsys Liberty 文件。這是一種描述單元時(shí)序、功耗等參數(shù)的文本文件。平時(shí)難免需要用文本工具去查看其中的內(nèi)容。而 Linux 環(huán)境中經(jīng)常用的文本編輯器之一就是 Vim。
一直存在的一個(gè)小問題,就是用 Vim 打開.lib文件的時(shí)候,語(yǔ)法高亮不正常,所有的字符,包括關(guān)鍵字和非關(guān)鍵字,通通是紅彤彤的大紅色。
語(yǔ)法高亮不正常,影響大嗎?
有一點(diǎn),但說(shuō)不上大。
有時(shí)候心煩了,就直接敲個(gè):syn off關(guān)掉語(yǔ)法高亮。還有一個(gè)小問題就是此時(shí) Vim 的整詞搜索,*也不起作用。這個(gè)影響稍微大一點(diǎn),因?yàn)橐嗲脦紫骆I盤,或者動(dòng)用鼠標(biāo)了。
說(shuō)來(lái)慚愧,這么個(gè)小問題中存在了好多年,起碼目前記憶鮮活的、在 A 司的前前后后好幾年一直是存在的。最近又到了頻繁查看.lib文件的時(shí)候,心血來(lái)潮,仔細(xì)研究了一下。
在作者的環(huán)境中,用戶自定義的文件類型設(shè)置
~/.vim/filetype.vim
包含有.lib的類型檢測(cè)。
augroup filetypedetecct au! BufRead,BufNewFile *.lib setfiletype lib augroup END
也有前賢們制作的對(duì)應(yīng)語(yǔ)法設(shè)置
~/.vim/syntax/lib.vim
但執(zhí)行過程中并沒有生效。為什么呢?
首先查看一下 Vim 啟動(dòng)的時(shí)候調(diào)用了哪些文件類型檢測(cè)腳本。
:scriptnames
在列出的腳本中找到類似下面的行。
~/.vim/filetype.vim
/usr/vim82/filetype.vim
第一個(gè)就是用戶自定義的文件類型設(shè)置,第二個(gè)是 Vim 自帶的文件類型設(shè)置。這么看就有點(diǎn)思路了,可能的原因是第二個(gè) Vim 自帶的文件類型設(shè)置在后面,覆蓋了前面用戶自定義的設(shè)置。
那么打開第二個(gè)設(shè)置看看有沒有什么線索,搜索lib,可以看到默認(rèn)的類型是Cobol,這看起來(lái)是一種上古的編程語(yǔ)言,和 Synopsys Liberty 完全不搭界。
" Cobol au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol
那么怎么讓 Vim 系統(tǒng)自帶的文件類型設(shè)置失效呢?找 IT 管理員直接改這個(gè)文件也許是個(gè)辦法,不過求人不如求己,再看下有沒有其它不影響系統(tǒng)的辦法。
在該設(shè)置文件的開頭,可以看到這么幾句(這個(gè)注釋看起來(lái)很不耐煩)。
" Listen very carefully, I will say this only once if exists("did_load_filetypes") finish endif let did_load_filetypes = 1
可以看出如果我們?cè)谶M(jìn)入這個(gè)設(shè)置文件之前,把did_load_filetypes設(shè)成1,就不會(huì)執(zhí)行它了。
為了把影響減到最小,直接把這個(gè)系統(tǒng)設(shè)置文件的全部?jī)?nèi)容復(fù)制到用戶自定義的文件類型設(shè)置文件中,然后把Cobol那一行的*.lib刪掉。
這樣執(zhí)行完
~/.vim/filetype.vim
之后,.lib的文件類型就識(shí)別成我們想要的lib類型了,并且did_load_filetypes也被設(shè)成1了;那么執(zhí)行到
/usr/vim82/filetype.vim
時(shí),發(fā)現(xiàn)did_load_filetypes已經(jīng)被設(shè)成1,就直接退出該設(shè)置腳本,也就不會(huì)把*.lib設(shè)置成Cobol類型了。
考慮到目前 Synopsys Liberty 類型文件的后綴花樣繁多,可以用通配符設(shè)的更通用一些。
au! BufRead,BufNewFile *.lib,*.lib_ccs_tn* setfiletype lib
多年存在的小問題,花幾分鐘研究清楚搞定??粗逅恼Z(yǔ)法高亮顯示效果,不禁捫心自問,為什么不早早動(dòng)手把它解決呢?
-
IC設(shè)計(jì)
+關(guān)注
關(guān)注
37文章
1290瀏覽量
103694 -
VIM
+關(guān)注
關(guān)注
0文章
134瀏覽量
15261 -
LINUX內(nèi)核
+關(guān)注
關(guān)注
1文章
316瀏覽量
21608
原文標(biāo)題:IC設(shè)計(jì)中值得解決的小問題(一)
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論