Vim | Linter(ALE)でFlake8チェックとBlack整形

Vimでソースチェックとフォーマットを整える。

インストール

Flake8

pip install flake8

Black

pip install black

Vim設定

Linter[ALE(Asynchronous Lint Engine)]

Vimでソースコードを編集中に解析して警告、エラーを出力します。

以下をDeinへ追加します。

call dein#add('dense-analysis/ale')

Linterで使用するチェッカー(ここではFlake8)や表示有無をVimに設定

let g:ale_linters = {'python': ['flake8']}
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
コマンド内容
:ALEInfoLinterの有効状態を表示

Flake8

以下をDeinへ追加します。

call dein#add('scrooloose/syntastic')

保存時にチェッカーを実行(Linter時はいらないかも)

let g:syntastic_python_checkers = ['flake8']

Black

Vimで編集時にコマンド実行で整形する。

以下をVimrcへ追加します。

let g:ale_fixers = {
  \   '*': ['remove_trailing_lines', 'trim_whitespace'],
  \   'python': ['black'],
  \ }
コマンド内容
:ALEFixSuggest実行可能なFormatterツールを表示
:ALEFix整形実行

Vim設定全体

~/.vimrc
from django.urls import path

# view.pyをインポート
from . import views"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=/home/codese/.cache/dein/repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('/home/codese/.cache/dein')
  call dein#begin('/home/codese/.cache/dein')

  " Let dein manage dein
  " Required:
  call dein#add('/home/codese/.cache/dein/repos/github.com/Shougo/dein.vim')

  " Add or remove your plugins here like this:
  call dein#add('Shougo/neosnippet.vim')
  call dein#add('Shougo/neosnippet-snippets')

  " nerdtree"
  call dein#add('scrooloose/nerdtree')
  call dein#add('scrooloose/syntastic')
  call dein#add('dense-analysis/ale')

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

nnoremap <silent><C-n> :NERDTreeToggle<CR>

let g:syntastic_python_checkers = ["flake8"]

:set fileencoding=utf-8
:set enc=utf-8
set tabstop=4
set expandtab

"colorscheme
colorscheme molokai
syntax on
let g:molokai_original = 1
let g:rehash256 = 1
set background=dark

set belloff=all

set tabstop=4
set shiftwidth=4

" .swpを出さない
set noswapfile

" *検索時に強制的に戻す
nmap * *N
" インクリメンタルサーチ
set incsearch
" 大文字/小文字を区別して検索(小文字のみの場合は大小無視)
set smartcase
" 末尾まで検索したら先頭に戻る
set wrapscan
" 検索結果をハイライト
set hlsearch
" 大小区別しないで検索
set noignorecase

" tags
set tags=./tags;.tags;

" tagsjump
nnoremap <C-w>] :vsp<CR> <C-w>l :exe("tjump ".expand('<cword>'))<CR>

" vimgrep
au QuickfixCmdPost make.grep.grepadd.vimgrep copen

" copy paste
set paste

" black
let g:ale_fixers = {
  \   '*': ['remove_trailing_lines', 'trim_whitespace'],
  \   'python': ['black'],
  \ }

" flake8
let g:syntastic_python_checkers = ['flake8']
let g:ale_linters = {'python': ['flake8']}
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
タイトルとURLをコピーしました