ale插件 vim_Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性

ALE是Vim的一个强大插件,用于实时、并发地检查代码错误,如Verilog。它通过stdin或临时文件与检测工具交互。本文介绍了ALE的安装、配置以及如何为不同语言(如vimscript、markdown和verilog)安装相应的linter,以提升编码的准确性。
摘要由CSDN通过智能技术生成

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的性能。这可以极大提升你代码输写的正确性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值