Vim基础篇(十二)——语法查错插件ale

前言:
  代码编辑时结合语法查错才能写好代码,目前较好的Vim语法检查插件有ale。

1 安装ale

  目前功能最强的语法检查插件之一有 dense-analysis/ale ,该插件最强大的功能是支持 (langserver)[https://langserver.org/ “langserver”],可支持多种语言,非阻塞式运行。
  在.vimrc文件中添加如下配置安装ale。

1
Plug 'dense-analysis/ale'

  在Vim中运行指令 :PlugInstall 完成插件安装。

2 配置LeaderF

  在配置文件中进行以下配置,具体可根据个人喜好进行修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"dense-analysis/ale
let g:ale_sign_column_always = 1 "符号槽始终开启
let g:ale_set_highlights = 0 "禁用高亮显示。
let g:ale_sign_error = '✘' "错误提示符。
let g:ale_sign_warning = '!' "警告提示符。
let g:ale_echo_msg_error_str = 'E' "错误提示符。
let g:ale_echo_msg_warning_str = 'W' "警告提示符。
let g:airline#extensions#ale#enable = 1 "将ale信息在airline中显示。

"使用clang对c和c++进行语法检查,对python使用pylint进行语法检查。
let g:ale_linters = {
\ 'c': ['clangd'],
\ 'c++': ['clangd']
\}

Vim基础篇(十二)——语法查错插件ale

前言:
  代码编辑时结合语法查错才能写好代码,目前较好的Vim语法检查插件有ale。

1 安装ale

  目前功能最强的语法检查插件之一有 dense-analysis/ale ,该插件最强大的功能是支持 (langserver)[https://langserver.org/ “langserver”],可支持多种语言,非阻塞式运行。
  在.vimrc文件中添加如下配置安装ale。

1
Plug 'dense-analysis/ale'

  在Vim中运行指令 :PlugInstall 完成插件安装。

2 配置LeaderF

  在配置文件中进行以下配置,具体可根据个人喜好进行修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"dense-analysis/ale
let g:ale_sign_column_always = 1 "符号槽始终开启
let g:ale_set_highlights = 0 "禁用高亮显示。
let g:ale_sign_error = '✘' "错误提示符。
let g:ale_sign_warning = '!' "警告提示符。
let g:ale_echo_msg_error_str = 'E' "错误提示符。
let g:ale_echo_msg_warning_str = 'W' "警告提示符。
let g:airline#extensions#ale#enable = 1 "将ale信息在airline中显示。

"使用clang对c和c++进行语法检查,对python使用pylint进行语法检查。
let g:ale_linters = {
\ 'c': ['clangd'],
\ 'c++': ['clangd']
\}

ale.png

  以上配置指定了使用clangd对c和c++进行语法检查。
  以下是配置的快捷键。

1
2
3
4
5
"dense-analysis/ale
"跳转到上一个错误或警告信息。
nmap <silent> <c-h> <Plug>(ale_previous_wrap)
"跳转到下一个错误或警告信息。
nmap <silent> <c-l> <Plug>(ale_next_wrap)

3 安装clangd

  每种编程语言都需要安装一个编译器进行语法查错,ale本身并不进行语法查错,各种语言的支持工具可见 supported-tools 。如果使用clangd对c/c++进行语法查错则需要在子系统Ubuntu中安装它,在子系统Ubuntu中安装clangd在终端输入以下指令。

1
sudo apt-get install clangd

  使用clangd比gcc好在会将语法错误或报警信息在浮动窗口中显示出来。

4 生成compile_commands.json

  ale默认会解析工程build目录下的compile_commands.json文件,该文件在linux下可由cmake编译工程自动生成,但使用cmake编译需要安装cmake工具并且为工程编写CMakeLists.txt文件。在CMakeLists.txt文件中会给出引用的头文件和源文件路径,因此语法查错时就能根据生成的compile_commands.json文件找到引用的头文件和源文件。compile_commands.json文件默认放到工程根目录或 ./build/ 目录下有效。
  这里不讲CMake的语法规则,可以阅读我的CMake教程或 [CMake](https://cmake.org “CMake””) 官网学习。
  在子系统Ubuntu安装CMake可在终端输入以下指令安装。

1
sudo apt-get install cmake

  以上配置指定了使用clangd对c和c++进行语法检查。
  以下是配置的快捷键。

1
2
3
4
5
"dense-analysis/ale
"跳转到上一个错误或警告信息。
nmap <silent> <c-h> <Plug>(ale_previous_wrap)
"跳转到下一个错误或警告信息。
nmap <silent> <c-l> <Plug>(ale_next_wrap)

3 安装clangd

  每种编程语言都需要安装一个编译器进行语法查错,ale本身并不进行语法查错,各种语言的支持工具可见 supported-tools 。如果使用clangd对c/c++进行语法查错则需要在子系统Ubuntu中安装它,在子系统Ubuntu中安装clangd在终端输入以下指令。

1
sudo apt-get install clangd

  使用clangd比gcc好在会将语法错误或报警信息在浮动窗口中显示出来。

4 生成compile_commands.json

  ale默认会解析工程build目录下的compile_commands.json文件,该文件在linux下可由cmake编译工程自动生成,但使用cmake编译需要安装cmake工具并且为工程编写CMakeLists.txt文件。在CMakeLists.txt文件中会给出引用的头文件和源文件路径,因此语法查错时就能根据生成的compile_commands.json文件找到引用的头文件和源文件。compile_commands.json文件默认放到工程根目录或 ./build/ 目录下有效。
  这里不讲CMake的语法规则,可以阅读我的CMake教程或 [CMake](https://cmake.org “CMake””) 官网学习。
  在子系统Ubuntu安装CMake可在终端输入以下指令安装。

1
sudo apt-get install cmake