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