最低限の手間で、簡易的に開発にも使えるVim環境の構築を目指します。
最近取り組んでいるシンプルに環境を作るシリーズの一環です。
環境
WSL2上のUbuntu20.04で作業しています。
目標
やること
- Vim8のインストール/更新
- プラグインマネージャ(vim-plug)のインストール
- LSP1を用いた各種プログラム言語の補完機能
- ステータスラインをドレスアップ
- Linter2の導入(Python/Go/Dockerを例として)
やらないこと
・Vimから離れられなくなるあれやこれや
Vim8のインストール/更新
Ubuntu20.04にはデフォルトでvim8.1が入っていますが、LSP機能を提供するプラグイン(coc)を利用する場合にvimは8.2以上の方が良いようなので更新します。
# リポジトリの追加
sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
# インストールを実施
sudo apt install vim
# 確認
vim --version
> VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jan 08 2021 14:00:27)
Nodejsをインストール
cocを動作させるにはnodejs 10.12以上が必要です。マニュアルにありませんがnpmも必要なので一緒に入れます。
nodejs v14系など、もっと新しいものを入れたい場合はnodesourceなどを参照してください。
sudo apt install nodejs npm
node --version
> v10.19.0
npm --version
> 6.14.4
プラグインマネージャ(vim-plug)をインストール
vimのプラグインマネージャはVundleなどもありますが、cocの公式ドキュメントがvim-plugを使っていたので合わせます。
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
存在しない場合は~/.vimフォルダを同時に作成します。
vim8の設定ファイルを作成
次の内容で~/.vim/vimrcを作成します。
vimでコピペする場合にインデントや自動コメントで結果が崩れる場合は「:set paste」の投入後に張り付けるとよいです。
"
" 通常のオプション
"
" lightlime利用のためにステータスラインを2行にする
set laststatus=2
" ビープ音を消します
set belloff=all
" コメントを灰色へ変更
hi Comment ctermfg=gray
"
" 以降、Pluginのための記述
"
call plug#begin('~/.vim/plugged')
" ステータスラインをかっこよくします
Plug 'itchyny/lightline.vim'
" coc
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
プラグインのインストールを実行
次のコマンドで上記設定ファイルに記述したプラグインをインストールします。
vim +PlugInstall +qall
あるいは、vimのコマンドラインモード(EXモード)で次のコマンドを入力します。
(コピペはコロンの右側「CocInstall coc-python」のみです。以降同様です。)
:PlugInstall
ここまでで冒頭の「やること」の4.までが完了しました。
言語毎のlinterなどの導入
Vimを開発に使う場合は、vim-pythonのような言語毎のvimプラグインをインストールする方も多いと思いますが、最近はVSCodeのおかげもありLSP環境が充実してきているので本記事ではcocのエクステンションを用いる方針で環境構築します。
Python
ここではflake8を利用する想定で解説します。
(venvやpyenvなど環境管理ツールを使っている場合はそれぞれの方法で環境をアクティベートした状態で実施してください。何を言っているか分からない方は無視していただいて問題ないです)
flake8をインストール
pip install flake8
vimのコマンドラインモードでcoc-pythonをインストール
:CocInstall coc-python
.pyファイル編集時にlinterを聞かれるのでflake8を選択します。
Go言語
goplsをインストール
GO111MODULE=on go get golang.org/x/tools/gopls@latest
vimのコマンドラインモードでcoc-goをインストール
:CocInstall coc-go
Docker
:CocInstall coc-docker
docker-compose用にyamlのプラグインも入れておく
:CocInstall coc-yaml
補足
vimrcのコピペで導入したプラグインの説明など。
lightline
ステータスラインを綺麗にするプラグインです。
インサートモードとコマンドモードで色が変化して便利です。
coc
LSPを使用して各種言語の保管やLint機能を提供します。
その他プラグイン探しの参考として
最後に
ここ数年、私はNeovimを使ってきました(VSCodeも使っていますが)。今もNeovimに不満はなく、lspやらファイラーやら整備して便利に使っています。今回は仕事でAWS EC2上のUbuntuで作業する用事があり、ここにNeovim環境を再構築するのは気が引けたので、シンプルながらソコソコ使えるVim8環境を目指した結果を記事にしました。
Vim8を本格的に使うのは初めてなので、なるべく定石と思われる方法を心がけていますが勘違いが混ざっていたらご指摘いただけるとありがたいです。投稿時点で完成ではなく、おかしな点など随時更新していきたいと思います。シンプルな設定を目指しているためプラグインのLazyLoadなどvimユーザからすると物足りないかもしれませんがコンセプトとしておおめに見ていただければと思います。