LiBz Tech Blog

LiBの開発者ブログ

個人的に便利だと思ったVimプラグイン(世のVimmerさんにも教えて欲しいな〜)

はじめに

皆さん、こんにちは!今週のブログは額田が担当させていただきます!
私事ですが未経験からエンジニアに転職をして、ついに1年が経過し時間が過ぎる速さを感じています。せっかく転職して1年が経過したということで、ここはやっぱりVimの話題で行きたいと思います。

というのも、なんちゃってVimmerを名乗っておきながら自分の.vimrcはCTOに頂いた設定をずっと使っていたんですよね。 せっかくなので何か自分でもカスタマイズしていきたいなぁと思ったので今回の記事にさせて頂きました!


この記事を読んで頂いた先輩Vimmerの皆様に何かオススメの設定とかプラグインとかあったら、教えていただけたらホントに嬉しいです(^ ^)


colorscheme

タイトルにプラグインと書いておきながら「いきなりcolorschemeかよ」と、自分でも思いつつやっぱり毎日触れるvimだからこそ色にはこだわりたいですよね。

自分はずっとicebergにお世話になっています。好きすぎてiterm2もicebergにしています。

f:id:yoshimi_nu:20191126185219p:plain

f:id:yoshimi_nu:20191126185423p:plain <githubページから画像を拝借させて頂きました>

github.com

青を基調としたこの落ち着いた色彩を見ると、開発で頭を悩ませた自分に対して「冷静になりなよ、落ち着いて作業しな」とVimから言われているような気分になります。

導入手順はとっても簡単!

$ cd ~/.vim/colors
$ curl -O https://raw.githubusercontent.com/cocopon/iceberg.vim/master/colors/iceberg.vim

あとは.vimrcに下記設定を加えれば完成です。

+ colorscheme iceberg

dein.vim

vimにプラグインを導入していくにつれて、.vimrcが膨大な量になっていき管理しきれないというのはよくある事だと思います。

そこでVimを愛用しているエンジニアの皆様は恐らくプラグイン管理ツールを使用されている事だと思いますが、自分はdein.vimを使用しています。

dein.vimの特徴としてはプラグインのリストを記述したTOMLファイルというものを用意する事で.vimrcの記述量を抑える事が出来て、プラグイン管理が簡単だという点です。
さらに下記の記事を拝見すると、Vim自体の速度も早くなるとか、、、まさに良いことしかありませんね!

導入方法も非常にわかりやすく記述してくださっているので、ぜひ参考にしていただくのが良いかと思います。

qiita.com

deoplete

こちらは有名なVimのコード補完ツールですね。今までコード補完系のプラグインを入れていなかったのですが、最近になってようやくdeopleteを導入して本当に開発が捗るようになりました。
お恥ずかしいですが、自分はタイポも多いのでコード補完さまさまといった状態です。

元々はneovim専用として開発されたのですが、Vim8にも対応しているということで導入することが出来ました。

ただしVimで導入する際はPython3でコンパイルされている必要があるということで、Vimを起動した後に

:echo has('python3')

が表示されることを確認してください。もしくは $ vim --version+python3が含まれているかどうかでも確認することが可能です!

ここまできたらすぐにVim8に導入!と行きたいところですが、neovimと違ってvimの場合はroxma/nvim-yarproxma/vim-hug-neovim-rpcという2つのプラグインが必要になりますので、忘れずに入れておいておくださいね。

あとはShougo/deoplete.nvimを導入すればOKです!

GitHub - Shougo/deoplete.nvim: Dark powered asynchronous completion framework for neovim/Vim8

ale

こちらはneovim、vim8で動作する非同期コードのプラグインで、Vimの入力をしながらコードチェックをする事ができるものです。

githubページはこちら。

github.com


こちらもインストールはいたって簡単で、プラグインの管理にdeinを使用されている方の場合はdein.toml

[[plugins]]
repo = 'w0rp/ale'

と記述するのみとなっております。
サポートされているツールは一部抜粋をするだけでも

Languages tools
HTML alex,fecs,html-beautify,HTMLHint,prettiier,proselint,tidy,write-good
CSS csslint,fecs,prettier,stylelint
JavaScript eslint,fecs,flow,jscs,jslint....etc
JSON fixjson,jq,jsonlint,prettier
Ruby brakeman,rubocop,debriide,rails_best_practices,reek...etc
SCSS prettier,sass-lint,stylelint
Go bingo,go build, gofmt, goimports, golint, golangci-lint...etc
Python autopep8, flake8, pyflakes, pylint...etc
Dart dartanalyzer,dartfmt,language_server

などなど、あげればキリがないくらい多くの言語とツールが用意されています。(詳細はgithubで確認お願いします)

またインストールするだけでもすぐに使用する事ができますが、各種設定を行うこともできます。 設定のヘルプなどを確認したいときはVimの操作中にhelp ale-optionshelp ale-linter-optionsで確認することも可能です。

ファイル保存時に自動で修正してほしい

下記コードを記載することで、ファイル保存時に自動でファイルの修正を行ってくれるようになります。

let g:ale_fix_on_save = 1

linterを指定したい

デフォルトでは編集中の言語でサポートされている全てのツールが実行される設定となっており、特定のツールのみを使用したいというときは

let g:ale_linters = {
\   'javascript': ['eslint'],
\}

などなど、他にはステータスラインに警告やエラーを表示させたりなど多くの設定があるのでぜひ確認してみてください!

vim-fugitive

これはもうみなさん、おなじみと言っても過言ではないVimからGit操作を行う事ができるプラグインですね。
自分はインストールだけしていて、正直使った事がほとんどなかったのですが(意味ない)、最近になって重い腰を腰をあげるとあら不思議、本当に便利ですねこれ。

github.com

コマンド 意味
Gstatus git statusを上部に表示
Gdiff 直前のコミットとの差分を表示(git diff)
Gread 現在開いているファイルを直前のコミット状態で確認する
Gwrite 現在開いているファイルをgit add
Gcommit git commit
Gblame 現在開いているファイルの各行がどのコミットのものなのかを教えてくれる(git blame)
Gread 現在開いているファイルのコミット前の変更を全て取り消す

まとめ

あまり数多くは紹介できませんでしたが、自分が最近になって使うようになったプラグインで便利だなぁと感じたものをご紹介させていただきました。

今回ご紹介させていただいたプラグインのそれぞれの最新Verは以下の通りとなっております!

プラグイン バージョン
deoplete 5.1
ale 2.6.0
vim-fugitive 3.1

最後に

deinでプラグイン管理をするようになって、すごくvimライフが充実してきたように感じます。他にも普段からお世話になっているプラグインはたくさんあるので全てをご紹介する事はできませんでしたが、世の先輩Vimmerの皆さまはどんなプラグインを使っているのかなぁと気になって夜も眠れません。ぜひ教えていただけると嬉しいです(^ ^)

今回もブログを読んでいただきありがとうございました!