若文章有錯誤請留言指證
需要轉載請通知筆者
Introduction
syntastic讓你可以在vim裡可以使用lint功能,讓你在寫code時檢查看看有沒有語法上的錯誤或者可能潛在的錯誤
Install
linter
首先要先安裝linter
有兩種選擇: Icarus Verilog
或是verilator
,看你偏好哪一種
我是經由homebrew
安裝:
$brew install verilator
$brew install iverilog
syntastic
syntastic
我是使用vundle
安裝,你也可以透過其他package manager安裝.請參考官方文件
透過vundle
安裝(這裡我是透過vundle
安裝syntastic
,如果不會使用vundle
,請參考Vundle官方)
Plugin 'scrooloose/syntastic'
在vimrc
加上以下幾行, 以下是參考syntastic
官方的設定
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
設置lintor
:verilator
和iverilog
我都設定了,兩個都有則會一起檢查,若是第一個掛了它會自動找第二個,如果你只想使用其中一種,留著你要的那一個即可
let g:syntastic_verilog_checkers = ['verilator','iverilog']
Use
完成之後可以用:SyntasticInfo
查看是否有配置完成
接下來就可以使用:SyntasticCheck
開啟語法檢查功能啦
syntastic
好像也有提供在:w
時提供檢查的功能
Some problem
syntastic
會根據filetype
去開啟不同語言的linter
可以用:set filetype?
看看是不是verilog
有些人會使用verilog_systemverilog的套件來讓verilog
產生語法高亮,filetype
則會是verilog_systemverilog
,此時syntastic
則不會支持
目前我的解法是在verilog_systemverilog
套件裡判斷副檔名的地方更改.
本來是長這樣:
au! BufNewFile,BufRead *.v,*.vh,*.vp,*.sv,*.svi,*.svh,*.svp setfiletype verilog_systemverilog
為了同時使用syntastic
和verilog_systemverilog
的語法高亮,我的做法是將.v
檔案當成普通的verilog
並讓syntastic
只支持.v
,我將上面改成:
au! BufNewFile,BufRead *.vh,*.vp,*.sv,*.svi,*.svh,*.svp setfiletype verilog_systemverilog
au! BufNewFile,BufRead *.v setfiletype verilog_systemverilog.verilog
也就是讓.v
檔案同時有兩種filetype
, .v
檔案之外都當成verilog_systemverilog
.
Summary
簡單來說你可以用一樣的方法去設定其他語言的linter
可以分成以下step:
1. 安裝語言相對應的linter
2. 安裝syntastic(如果本來就有可以跳此步驟)
3. 查看syntastic官方文件,看syntastic有沒有支持你的linter
4. 根據syntastic官方文件去設定你的linter
step3
的syntastic
所支持的linter列表
Reference
- VIM插件: SYNTASTIC[语法检查]
- [資工雜筆] 建置 vim + syntastic + eslint + gcclint