もた日記

くだらないことを真面目にやる

Vimメモ : Neovimで開発環境を段階的に構築する(1)インストールとcheckhealth

最近はVisual Studio Codeを使うことも多くなってきたが、Vimが好きなのでNeovimで開発環境を構築してみる。
Vimの設定については検索すると色々出てくるが、設定ファイルが複雑だったり、自分の環境では動かなかったりすることがあるので、なるべく設定ファイルが長くならないようにプラグインを用いて段階的に下記項目の設定をしていく。

  • プラグインマネージャー
  • カラースキーム
  • ステータスライン
  • 空白可視化
  • インデント可視化
  • ファイルエクスプローラー
  • タグ一覧表示
  • あいまい検索
  • Git連携
  • Git差分表示
  • 多言語パック
  • Linter
  • Formatter
  • スニペット
  • 入力補完
  • 定義元ジャンプ
  • プログラム実行

f:id:wonder-wall:20190826231335p:plain
最終的な画面イメージ

開発環境を構築するためにはどのような機能が必要かを整理するのが目的なので、この記事で紹介する設定ファイルを使っても完璧な設定にはならないことに注意。

Neovimのインストール

Neovimのインストール方法はこのページに書いてある。
今回はCentOS 7で試してみる。

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

以下の方法でインストールしたところv0.3.0と少しバージョンが古かった。

sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install neovim

Releasesのページにはバイナリがあるので、以下のようにすることでnvimコマンドでNeovimが起動できるようになる。

curl -LO https://github.com/neovim/neovim/releases/download/v0.3.8/nvim.appimage
chmod u+x nvim.appimage
sudo mv nvim.appimage /usr/local/bin/nvim
nvim

今回はNVIM nightly (unstable)を使うのでバージョンは0.4.0

f:id:wonder-wall:20190728181438p:plain

checkhealth

Neovimの起動画面にtype :checkhealth<Enter> to optimize Nvimと書いてあるので:checkhealthを実行してみる。
WARNINGやERRORがあるのでまずはこれらを解消してみる。

f:id:wonder-wall:20190728181522p:plain

f:id:wonder-wall:20190728181535p:plain

Configurationの項目では設定ファイルがないということだが、Neovimの設定ファイルは~/.vimrcではなく~/.config/nvim/init.vimのようだ。
以下のように設定ファイルを作成して、

mkdir -p ~/.config/nvim
nvim ~/.config/nvim/init.vim

下記設定を記述。
set numberは行番号を表示、set termguicolorsはTrueColorで表示する設定。

set number
set termguicolors

再度:checkhealthを実行してみるとConfigurationの部分がOKになっていることが確認できる。

f:id:wonder-wall:20190728181629p:plain

残りの部分はClipboard, Python, Ruby, Node.js providerに関する項目で順番に見ていく。
Clipboardは:help clipboardによると以下のツールが使用でき、

  - g:clipboard
  - pbcopy, pbpaste (macOS)
  - wl-copy, wl-paste (if $WAYLAND_DISPLAY is set)
  - xclip (if $DISPLAY is set)
  - xsel (if $DISPLAY is set)
  - lemonade (for SSH) https://github.com/pocke/lemonade
  - doitclient (for SSH) http://www.chiark.greenend.org.uk/~sgtatham/doit/
  - win32yank (Windows)
  - tmux (if $TMUX is set)

以下のようなカスタム設定ができる。
でも、Clipboardは環境に依存しそうなのでとりあえずはスキップ。

    let g:clipboard = {
        ¦ \   'name': 'myClipboard',
        ¦ \   'copy': {
        ¦ \      '+': 'tmux load-buffer -',
        ¦ \      '*': 'tmux load-buffer -',
        ¦ \    },
        ¦ \   'paste': {
        ¦ \      '+': 'tmux save-buffer -',
        ¦ \      '*': 'tmux save-buffer -',
        ¦ \   },
        ¦ \   'cache_enabled': 1,
        ¦ \ }

Python providerはPython2とPython3のそれぞれでpynvim(前はneovimという名前だった)パッケージをインストールするとOKになる。
例えば、pyenvpyenv-virtualenvを使用している場合は以下のようにする。

pyenv install 3.7.4
pyenv install 2.7.16
pyenv virtualenv 3.7.4 neovim3
pyenv virtualenv 2.7.16 neovim2
pyenv shell neovim3
pip install pynvim
pyenv shell neovim2
pip install pynvim

そして、init.vimでPythonのパスを設定する。

let g:python_host_prog = $HOME . '/.pyenv/versions/neovim2/bin/python'
let g:python3_host_prog = $HOME . '/.pyenv/versions/neovim3/bin/python'

RubyとNode.jsも同様にneovimパッケージをインストールするとOKになる。

rbenv instlal 2.6.3
rbenv global 2.6.3
gem install neovim
npm install -g neovim

同様にパスを明示的に指定することもできるが、パスが通っていれば不要かもしれない。

let g:ruby_host_prog = $HOME . '/.rbenv/versions/2.6.3/bin/neovim-ruby-host'
let g:node_host_prog = $HOME . '/.n/lib/node_modules/neovim/bin/cli.js'

これで全てがOKになったので次回以降で開発環境を構築していく。

f:id:wonder-wall:20190728181705p:plain

まとめ

今回の~/.config/nvim/init.vim

set number
set termguicolors

let g:python_host_prog = $HOME . '/.pyenv/versions/neovim2/bin/python'
let g:python3_host_prog = $HOME . '/.pyenv/versions/neovim3/bin/python'

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

wonderwall.hatenablog.com

wonderwall.hatenablog.com