ale插件 vim_Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性
Vim之代碼異步檢測插件 ALE
前言
知名的 vim 代碼檢測插件主要是兩個
syntastic
neomake
ALE
ALE 雖是后起之秀,但目前是功能最強大的一個
實時檢測。為了讓代碼可以在編輯時進行實時的檢測,ale 的運行方式是將代碼做為 stdin 導入檢測工具(不支持的話使用臨時文件),這樣做的好處是我們可以更早的發現錯誤。
并發運行。ale 默認使用所有可用的檢測工具并發執行檢測,譬如說我們有時需要同時對 javascript 運行 eslint 以及 jscs。
標識欄、狀態欄以及命令行消息支持。
安裝
Vim 8 on Unix
mkdir -p ~/.vim/pack/git-plugins/start
git clone https://github.com/w0rp/ale.git ~/.vim/pack/git-plugins/start/ale
NeoVim on Unix
mkdir -p ~/.local/share/nvim/site/pack/git-plugins/start
git clone https://github.com/w0rp/ale.git ~/.local/share/nvim/site/pack/git-plugins/start/ale
Vim 8 on Windows
## Run these commands in the "Git for Windows" Bash terminal
mkdir -p ~/vimfiles/pack/git-plugins/start
git clone https://github.com/w0rp/ale.git ~/vimfiles/pack/git-plugins/start/ale
Vundle
把下面行加入到,vimrc
Plugin 'w0rp/ale'
Linter
ale 的 linter 都要自己安裝
還好系統一般都是有 gcc, python, gofmt 之類的
需要額外安裝的大約有
vint: vimscript
mdl: markdown
iverilog: verilog
vint
安裝方法如下:
pip3 install vim-vint
mdl
安裝方法如下:
gem install mdl
iverilog
安裝 gperf, 下載源碼: 鏈接
./configure && make && make install
下載 iverilog 源碼:
git clone https://github.com/steveicarus/iverilog.git
cd iverilog
./autoconf.sh
./configure && make && make isntall
配置使用
"-----------------------------------------------------------------------------
" plugin - ale.vim
"-----------------------------------------------------------------------------
"keep the sign gutter open
let g:ale_sign_column_always = 1
let g:ale_sign_error = '>>'
let g:ale_sign_warning = '--'
" show errors or warnings in my statusline
let g:airline#extensions#ale#enabled = 1
" self-define statusline
"function! LinterStatus() abort
" let l:counts = ale#statusline#Count(bufnr(''))
"
" let l:all_errors = l:counts.error + l:counts.style_error
" let l:all_non_errors = l:counts.total - l:all_errors
"
" return l:counts.total == 0 ? 'OK' : printf(
" \ '%dW %dE',
" \ all_non_errors,
" \ all_errors
" \)
"endfunction
"set statusline=%{LinterStatus()}
" echo message
" %s is the error message itself
" %linter% is the linter name
" %severity is the severity type
" let g:ale_echo_msg_error_str = 'E'
" let g:ale_echo_msg_warning_str = 'W'
" let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
" use quickfix list instead of the loclist
let g:ale_set_loclist = 0
let g:ale_set_quickfix = 1
" only enable these linters
"let g:ale_linters = {
"\ 'javascript': ['eslint']
"\}
nmap (ale_previous_wrap)
nmap (ale_next_wrap)
" run lint only on saving a file
" let g:ale_lint_on_text_changed = 'never'
" dont run lint on opening a file
" let g:ale_lint_on_enter = 0
"------------------------END ale.vim--------------------------------------
效果
可看到因為第69,70,71, 73行的幾個模塊定義沒有提供,所以左邊線上有紅色的>>
把光標定位到73行, 在下面命令行會給出具體的錯誤:
Unknown module type: pmu
總結
ALE可以讓你一邊編碼一邊實時檢查代碼的語法問題,同時還完全不影響vim的性能。這可以極大提升你代碼輸寫的正確性。
總結
以上是生活随笔為你收集整理的ale插件 vim_Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xml 名称中不能包含= 字符_可扩展标
- 下一篇: c++ 使用nacos_《Nacos系列