なんか書いていこうぜー .com

Let's write something good

最近追加した Vim のプラグイン

2021-10-17
  • Share on Facebook
  • Tweet
  • Add to Pocket

普通にテキスト書けるくらいのプラグインのみ残して削除していたのだが、最近もうちょっと効率化したいという意欲が高まったので、効率化されそうと思ったプラグインをいくつか導入したので記録として残しておく。

導入したプラグイン

詳細は後で書くとして、導入したものは以下のとおり。

ctrlp.vim, vim-quickhl

vim-quickhl はカーソル下のワードをハイライトしてくれるプラグインだ。通常の検索と違い、複数のワードをそれぞれハイライトしてくれる。

検索でハイライトされるのはいいのであるが、カーソルが移動されると元いた位置に戻ってこないといけないので、カーソルを移動させずにどこで使われているかを確認するために導入してみた。

CtrlP は正確に言えば以前から導入していたが、私の設定が悪く、ファイルの多いプロジェクトだと検索が重くてほぼ使っていなかった。

CtrlP に出戻りした にある ctrlp-matchfuzzy の部分を見て ctrlp-matchfuzzy を導入し、Vim の CtrlP が動かなくなっていたので設定を見直した の .gitignore に指定したファイルを一覧から除外する にあった検索対象となるファイルを絞る設定を導入したことでかなり高速化したので、今は常用している。

indentLine, tagbar

indentLine はインデントを特定の文字列でガイドしてくれるプラグイン。 README にある文字列を指定すると、マルチバイト文字でズレることもあるので、| のみ指定している。

tagbar は ctags を利用して、class やメソッドのアウトラインを表示、ガイドしてくれるプラグイン。~/.ctags に設定を書かない状態だと、RSpec のファイルをアウトライン表示してくれないので、 https://gist.github.com/diegotoral/ce58679a2d80ecc1419767c773ec808a を参考に書き込んで ctags を生成と describe, context, it が表示されるようになった。

RSpec のアウトラインは表示されるものの、並び順はコードの順番とは異なるのでこれが解決できればもっといいな、という感じだが、定義には随分楽に飛べるようになった。

vim-test

特にコマンドの設定等しなくてもテストが実行できるプラグイン。vim でテストが記述されているファイルを開き、README にある呼び出しショートカットキーを設定して実行すればテストが実行されるので、今回書いているもので一番便利に使わせてもらっている。

今は vimterminal でテストが実行されるように設定しており、実行時に開かれるバッファ内で結果を確認したり、デバッグしたりしている。

ale, vim-lsp-ale

vim-lsp と asyncomplete で補完をしている。この LSP が動作する状態で ale を導入すると、LSP のチェックのみがバッファ上に表示されて ale の警告が表示されなかったため、制御するために vim-lsp-ale を導入した。

VIMのaleでのrubocopを軽快に の設定を参考に以下のようなテキトーな設定を書いて、bundle exec rubocop されるようにした。

let g:ale_fix_on_save = 1
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_enter = 0
let g:ale_lint_on_text_change = 0

let g:ale_set_quickfix = 1
let g:ale_set_loclist = 0
let g:ale_open_list = 1
let g:alg_keep_list_window_open = 0
let g:ale_list_window_size = 10

let g:ale_sign_column_always = 1
let g:ale_sign_error = '=='
let g:ale_sign_warning = '--'

" LSPのチェックでなく、RuboCop を使う
let g:ale_linters = {
    \   'ruby': ['rubocop'],
    \ }

function! s:set_ale_ruby_rubocop_executable()
  let b:ale_ruby_rubocop_executable = 'bundle'
endfunction

augroup my_ale_ruby_rubocop_setting
  au!
  au FileType ruby :call s:set_ale_ruby_rubocop_executable()
augroup END

あまり実行回数が増えないように save 時にのみ実行する、警告が出た箇所に出る記号を gitgutter のものとわかりやすく区別する等の設定を入れている。

さいごに

最近追加した Vim プラグインの記録を書いた。特に vim-test と ale が非常に便利で、これらがないと効率がガタ落ちするくらいに馴染んでいる。

ちょこちょこプラグイン探したり、設定見直したりしているので、大きな変更があればまた記録しよう。

categories: vim

...