Homebrew で macOS に Neovim をインストールして, 使えるように設定する方法


拡張性と利便性に重きが置かれた Vim のフォーク Neovim を Homebrew を使って macOS にインストールして, 初期設定して使い始められるようにする方法を紹介します.

Homebrew をインストールする

Homebrew を使って Neovim をインストールしたいと思いますので, Homebrew がインストールされている必要があります.

Note: 既に Homebrew をインストールして使える状態の方は, 次の節に飛ばれてください.

Xcode のコマンドラインツール (CLI) をインストールされていない方は, まずそれを次のコマンドでインストールする必要があります:

xcode-select --install

Xcode のコマンドラインツールがインストールできましたから次のコマンドでバージョンを確認できます:

xcode-select -v

Xcode のコマンドラインツールがインストールされていることを確認したら, 次のコマンドで Homebrew をインストールします.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これで Homebrew のインストールが完了しました.

Neovim をインストールする

Homebrew を使って, 次のコマンドで Neovim をインストールします:

brew install neovim

init.vim を設定する

Neovim のインストールが完了したので, 今度は Neovim の設定ファイル init.vim を設定したいと思います.

インストール直後にはそのファイルは存在しませんので, まず次のコマンドで作成します:

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

このように init.vim のパスは ~/.config/nvim/init.vim というルートディレクトリが ~/.config となっており, XDG Base Directory Specification というものに準拠しています.

今まで Vim を使った事がなくて, Neovim から始められるという方は, まっさらな init.vim にオプションやコマンドを設定して, Neovim をどんどん自分好みにカスタマイズしていくことができます.

そうでなくて, もし以前に Vim を使われていて, Neovim を使ってみようと思われた方は, 既存の Vim の設定ファイル ~/.vimrc の設定内容をそのまま ~/.config/nvim/init.vim に引き継ぐこともできます.

そのように今ある .vimrc の設定内容を引き継ぎたいという場合, 次の内容を init.vim に加えるとそうすることができます:

set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
source ~/.vimrc

もしくは .vimrc の内容を引き継がないで Vim と切り離して別々に Neovim を使いたいという場合, そのままコマンドやオプションを init.vim に書き込んでいくことができます.

init.vim の編集方法, ファイルパス, オプションの設定方法といったことに関するヘルプは :help vimrc-intro で見ることができます.

Python, Ruby, Node を統合させる

Neovim はいくつかの機能をダイナミックプロバイダと呼ばれる Python, Ruby, Node に委任しているようで, どのような機能を実際委任しているのかというのは正直よくわからないのですが, 設定しておいて損はないでしょうという事で, Python, Ruby, Node をダイナミックプロバイダとして設定してみたいと思います.

あと Neovom で :checkhealth と入力して, Neovim の状態を診断すると, これら Python, Ruby, Node が設定されていないと, オプショナルとなっていますが, それぞれの neovim が見つからないという内容のエラーが表示されるので, インストールしておいたほうがいい感じです.

ただ, 慣れていない方は少々手間がかかるかと思いますので, Neovim をとりあえず使い始めたいという場合, あくまでオプショナルな設定ですので, これらの設定を無理して最初から設定する必要性はあまりないと思われますので, それなりに余裕のある方だけ設定していただければと思います.

Homebrew を使って Python, Ruby, Node.js を直接インストールして設定する方法と, それぞれのバージョンマネージャ, pyenv, rbenv, nodenv を使って Python, Ruby, Node.js をインストールしてバージョン管理しながら設定する方法の 2 通りをそれぞれ紹介させていただきます.

とりあえずダイナミックプロバイダを設定されたいという方は, Homebrew による直接インストールの方法がよりお手軽なのでいいかもです.

Python プロバイダを設定する

まずは Python プロバイダの設定からしたいと思います.

Python はバージョン 2 と 3 があるので, それぞれ設定する必要があります.

1) Homebrew でインストールして設定する方法と, 2) pyenv を使ってインストールして virtualenv で独立した Python 環境を作って設定する方法の 2 通りを紹介します.

1. Homebrew で Python をインストールして設定する

1 つ目の方法として Homebrew で Python をインストールして設定します.

まず Python のバージョン 2 と 3 をインストールします:

brew install python@2 python@3

すると pip2pip3 というコマンドが使えるようになります.

なのでそれぞれのコマンドを使って neovim というパッケージをインストールします:

pip2 install neovim
pip3 install neovim

そして次のコマンドで表示されるそれぞれの Python パスを控えておきます:

which python2
which python3

僕の場合はそれぞれ次のようになります:

/usr/local/bin/python2
/usr/local/bin/python3

そして先ほどの init.vimg:python_host_prog には, 今控えたの which python2 のパス, g:python3_host_prog には, 同じく今控えた which python3 のパスを指定します:

let g:python_host_prog  = '/usr/local/bin/python2'
let g:python3_host_prog = '/usr/local/bin/python3'

もしくは .vimrc の設定を init.vim に引き継いでいる方は, .vimrc に次のような Neovim の時だけ実行する条件分岐を使うといいと思います:

if has('nvim')
  let g:python_host_prog  = '/usr/local/bin/python2'
  let g:python3_host_prog = '/usr/local/bin/python3'
endif

このようにパスを指定することによって Neovim の起動時間がより早くなるようです.

これで Python プロバイダ設定の 1 つ目の方法である Homebrew で Python をインストールして設定する手順が完了します.

2. pyenv で Python をインストールして設定する

2 つ目の方法として pyenv で Python をインストールして virtualenv を使って neovim パッケージ専用の virtualenv 環境を作り設定します.

プロジェクト毎に virtualenv 環境をよく構築される方は, この方法は推奨されます.

pyenvpyenv-virtualenv をインストールする

なので pyenv に加えて pyenv-virtualenv が Homebrew によってインストールされている必要があります.

Note: pyenvpyenv-virtualenv をインストール済み + 設定済みの方は次の節にお飛びください.

まず次のコマンドで pyenvpyenv-virtualenv をインストールします:

brew install pyenv pyenv-virtualenv

pyenv-virtualenv をインストールすることによって pyenv で virtualenv 関連のコマンドが使えるようになります.

そして次のコマンドを入力して, pyenv を初期化します:

pyenv init

このコマンドは一度実行すれば, 今後もう一度実行する必要はありません.

そして次の 2 行を .bashrc.zshrc に加えます:

eval "$(pyenv init -)"
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi

一行目は pyenv のためのもので, 二行目は pyenv-virtualenv のためのものです.

そして .bashrc もしくは .zshrc を読み込み直します:

# If using Bash
source ~/.bashrc

# If using Zsh
source ~/.zshrc

これで pyenvpyenv-virtualenv の設定が完了し, 使えるようになりました.

これで pyenv のインストールと設定が完了し, 使えるようになりました.

pyenv のインストールと設定方法のより詳しい内容は次のリンクより参照できます:

https://github.com/pyenv/pyenv#homebrew-on-mac-os-x

pyenv で設定する

まず pyenv で Python のバージョン 2 と 3 をそれぞれインストールします:

pyenv install 2.7.15
pyenv install 3.7.0

Memo: インストールできる Python のバージョンは pyenv install -list で表示されます.

インストールできたら, 次のコマンドでそれぞれのバージョンの neovim 専用の virtualenv 環境を作ります:

pyenv virtualenv 2.7.15 py2neovim
pyenv virtualenv 3.7.0 py3neovim

そしてまず py2neovim を作動させ, pipneovim をインストールし, pyenv which コマンドで表示されるパスを控えます:

pyenv activate py2neovim
pip install neovim
pyenv which python

僕の場合は次のように表示されます:

/Users/yu8mada/.pyenv/versions/py2neovim/bin/python

同じように, 今度は py3neovim を作動させ, neovim をインストールし, pyenv which で表示されるパスを控えます:

pyenv activate py3neovim
pyenv install neovim
pyenv which python

僕の場合は次のように表示されます:

/Users/yu8mada/.pyenv/versions/py3neovim/bin/python

そしたら Python 2 と 3 の neovim パッケージをそれぞれインストールして, それぞれのパスを控えたので, init.vim に次の内容を追加します:

let g:python_host_prog  = '/Users/yu8mada/.pyenv/versions/py2neovim/bin/python'
let g:python3_host_prog = '/Users/yu8mada/.pyenv/versions/py3neovim/bin/python'

このようにすることで各 virtualenv 環境毎に neovim をインストールする必要が無くなります.

.vimrc の内容を init.vim に引き継いでいる方は, .vimrc に次のように書けます:

if has('nvim')
  let g:python_host_prog  = '/Users/yu8mada/.pyenv/versions/py2neovim/bin/python'
  let g:python3_host_prog = '/Users/yu8mada/.pyenv/versions/py3neovim/bin/python'
endif

これで Python プロバイダ設定の 2 つ目の方法である pyenv でそれぞれの Python バージョンをインストールして, それぞれの virtualenv 環境を作って設定する手順が完了します.

Ruby プロバイダを設定する

今度は Ruby プロバイダの設定をしたいと思います.

1) Homebrew で直接インストールして設定する方法と, 2) rbenv で Ruby のバージョン管理をしながらインストールして設定する方法の 2 通りを紹介します.

1. Homebrew で Ruby をインストールして設定する

1 つ目の方法として, Homebrew を使って Ruby をインストールして設定する方法です.

まず次のコマンドで Ruby をインストールします:

brew install ruby

すると gem コマンドが使えるようになりますので, 次のコマンドで neovim という RubyGem をインストールします:

gem install neovim

そして neovim-ruby-host という実行ファイルが作られるので, そのパスを which で控えます:

which neovim-ruby-host

僕の場合は次のパスが表示されます:

/usr/local/bin/neovim-ruby-host

そして :help provider-ruby で表示されるヘルプには書かれていないのですが, おそらく次の一行を init.vim に加えると Neovim の起動が早くなると思われます:

let g:ruby_host_prog = '/usr/local/bin/neovim-ruby-host'

.vimrc の内容を init.vim に引き継いでいる方は, .vimrc に次のように書けます:

if has('nvim')
  let g:ruby_host_prog = '/usr/local/bin/neovim-ruby-host'
endif

これで Ruby プロバイダ設定の 1 つ目の方法である Homebrew で Ruby をインストールして設定する手順が完了します.

2. rbenv で Ruby をインストールして設定する

2 つ目の方法として, rbenv で Ruby をインストールして設定する方法です.

Ruby のバージョンマネージャ rbenv で Ruby の複数のバージョンを管理しながら, Neovim の Ruby プロバイダの設定を行いたいという場合の方法です.

rbenv をインストールする

なので pyenv 同様, rbenv がインストールされている必要があります.

Note: rbenv をインストール済み + 設定済みの方は次の節にお飛びください.

まず, 次のコマンドで rbenv をインストールします:

brew install rbenv

そして次のコマンドで rbenv を初期化します:

rbenv init

このコマンドは一度実行すれば, 今後もう一度実行する必要はありません.

そして次の一行を .bashrc もしくは .zshrc に加えます:

eval "$(rbenv init -)"

そして .bashrc もしくは .zshrc を読み込み直します:

# If using Bash
source ~/.bashrc

# If using Zsh
source ~/.zshrc

これで rbenv のインストールと設定が完了し, 使えるようになりました.

より詳しい rbenv のインストールと設定方法は次のリンクより参照できます:

https://github.com/rbenv/rbenv#homebrew-on-macos

rbenv で設定する

rbenv で Ruby をインストールする場合, 次のコマンドで任意の Ruby バージョンをインストールします:

rbenv install 2.5.1

Memo: rbenv でインストールできる Ruby のバージョンは rbenv install --list で表示できます.

そして次のコマンドで 2.5.1 をグローバルに設定して, 次の gem コマンドがその 2.5.1 に紐づくようにします:

rbenv global 2.5.1

そして gem コマンドで neovim をインストールします:

gem install neovim

そしたら neovim-ruby-host という実行ファイルが作成されるので, rbenv which でその実行ファイルのパスが表示されるので控えておきます:

rbenv which neovim-ruby-host

僕の場合は次のようなパスになります:

/Users/yu8mada/.rbenv/versions/2.5.1/bin/neovim-ruby-host

そして rbenv でインストールする Ruby のバージョン毎に neovim をインストールしなくてもいいように init.vim に次の一行を加えます:

let g:ruby_host_prog = '/Users/yu8mada/.rbenv/versions/2.5.1/bin/neovim-ruby-host'

.vimrc の内容を init.vim に引き継いでいる方は, .vimrc に次のように書けます:

if has('nvim')
  let g:ruby_host_prog = '/Users/yu8mada/.rbenv/versions/2.5.1/bin/neovim-ruby-host'
endif

これで Ruby プロバイダ設定の 2 つ目の方法である rbenv を使って Ruby をインストールして設定する手順が完了します.

Node.js プロバイダを設定する

今度は Node.js プロバイダの設定をします.

1) Homebrew で Nodes.js をインストールして設定する方法と, 2) nodenv で Node.js をインストールして設定する方法の 2 通りを紹介します.

1. Homebrew で Node.js をインストールして設定する

1 つ目の方法として, Homebrew を使って Node.js をインストールして設定します.

次のコマンドで Node.js をインストールします:

brew install node

npm というコマンドも一緒にインストールされるので, neovim をインストールします:

npm install --global neovim

Memo: --globa オプションを使うことによって, /usr/local 以下のパスにパッケージがインストールされます.

そして neovim-node-host という実行ファイルが作られるので, which でそのパスを控えます:

which neovim-node-host

僕の場合は次のようになります:

/usr/local/bin/neovim-node-host

そして init.vim に次の一行を加えます:

let g:node_host_prog = '/usr/local/bin/neovim-node-host'

このようにすることによって Neovim の起動が早くなります.

.vimrc の内容を init.vim に引き継いでいる方は, 次のように書けます:

if has('nvim')
  let g:node_host_prog = '/usr/local/bin/neovim-node-host'
endif

これで Node.js プロバイダ設定の 1 つ目の方法である Homebrew で Node.js をインストールして設定する手順が完了します.

2. nodenv で Node.js をインストールして設定する

2 つ目の方法として Node.js のバージョンマネージャ nodenv を使って Node.js をインストールして neovim パッケージをインストールして設定します.

nodenv をインストールする

なので nodenv がインストールされている必要があります.

Note: nodenv のインストールが既に済んでいて, 設定も完了している方は, 次の節にお飛びください.

まず nodenv をインストールします:

brew install nodenv

そして次のコマンドを実行して nodenv を初期化します:

nodenv init

このコマンドは一度実行すると, 次実行する必要はありません.

そして次の一行を .bashrc もしくは .zshrc に加えます:

eval "$(nodenv init -)"

そして .bashrc もしくは .zshrc を読み込み直します:

# If using Bash
source ~/.bashrc

# If using Zsh
source ~/.zshrc

これで nodenv のインストールと設定が完了しました.

より詳しい nodenv のインストールと設定方法は, 次のリンクよりより参照できます:

https://github.com/nodenv/nodenv#homebrew-on-mac-os-x

nodenv で設定する

nodenv で任意の Node.js のバージョンをインストールします:

nodenv install 10.8.0

Memo: nodenv でインストール可能な Node.js のバージョンは nodenv install --list で表示できます.

次のコマンドで 10.8.0 をグローバルに設定します:

nodenv global 10.8.0

そして npm コマンドが, その 10.8.0 に紐付いたので, そのコマンドで neovim をインストールします:

npm install --global neovim

Memo: --global オプションによって, neovim が, nodenv によってインストールされた Node.js (10.8.8) がインストールされているパス以下にインストールされます.

neovim-node-host という実行ファイルが作成されるので, 次のコマンドでそのパスを控えます:

nodenv which neovim-node-host

僕の場合は次のように表示されます:

/Users/yu8mada/.nodenv/versions/10.8.0/bin/neovim-node-host

そして init.vim に次の一行を加えます:

let g:node_host_prog = '/Users/yu8mada/.nodenv/versions/10.8.0/bin/neovim-node-host'

このようにすることによって nodenv によってインストールされる Node.js のバージョン毎に neovim パッケージをインストールする必要がなくなります.

.vimrc の内容を init.vim に引き継いでいる方は, 次のように書けます:

if has('nvim')
  let g:node_host_prog = '/Users/yu8mada/.nodenv/versions/10.8.0/bin/neovim-node-host'
endif

これで Node.js プロバイダ設定の 2 つ目の方法である nodenv で Node.js をインストールして設定する手順が完了します.

まとめ

これで Neovim の初期設定が完了し, 使い始めることができます.

確認のために Neovim 内で :checkhealth コマンドを実行して, Neovim の設定状態をチェックしてみていただければと思います.

何もエラーが表示されなければ, 初期設定は万事 OK です.

参考までに, 僕自身の init.vim には, 現在それぞれのプロバイダのパスを次のように設定しています:

let g:python_host_prog  = '/Users/yu8mada/.pyenv/versions/py2neovim/bin/python'
let g:python3_host_prog = '/Users/yu8mada/.pyenv/versions/py3neovim/bin/python'
let g:ruby_host_prog = '/Users/yu8mada/.rbenv/versions/2.5.1/bin/neovim-ruby-host'
let g:node_host_prog = '/Users/yu8mada/.nodenv/versions/10.8.0/bin/neovim-node-host'

みていただくとわかりますように pyenv, rbenv, nodenv と全て *env によってインストールされたパスになります.

Python, Ruby, Node.js とそれぞれ異なるプログラミング言語でありながら, 同じ統一されたコマンドでインストールしたり, インストールできるバージョンを確認したり, 実行ファイルのパスを確認できるというのはそれぞれのバージョンマネージャ毎に異なる使い方を覚えなければいけないといったことを出来る限り無くしてくれているので, 助かります.

ただ Python, Ruby, Node.js をダイナミックプロバイダとして設定するのは, やや手間がかかってしまうので, あまりこのような操作に慣れていないという方は, init.vim の設定 (もしくは作成) だけでも Neovim を使い始めるということでしたら大丈夫かと思います. (あくまでダイナミックプロバイダの設定はオプショナルなので)

今回の内容のほとんどはそのダイナミックプロバイダの設定手順になってしまいましたが…

また今回の内容はあくまで Neovim を使い始める本当に最初の一歩に過ぎませんので, Neovim をより便利に使っていくには, お好みのプラグインマネージャをインストールして, お好みのプラグインをインストールして, お好みのコマンド, オプションを色々設定していく必要があるかと思います.

もちろん何も設定しなくても Neovim はデフォルトで色々設定されていますので, 十分テキストエディタとして使うことができるのですが, より綺麗なカラースキームを使いたいとか, より使いやすいようにマッピングを設定したい, という思いが, 慣れてくるに従って出てくると思いますので, Vim を使ったことがなく Neovim が初めてという方は徐々にそういった気持ちが出てきたときにググりながら少しずつ覚えて設定, カスタマイズしていくというのがいいかと思います.

Vim から Neovim に移られた方は Neovim 内で :help nvim-from-vim と入力すると, その移行に関するヘルプを見ることができます.

今回設定した Python, Ruby, Node.js のダイナミックプロバイダに関するより詳しい情報は :help provider で見れます.

Neovim のイントロは :help nvim で見れます.

Vim と Neovim との違いは?, 設定パスは?, どんなオプションがデフォルトで設定されている?, どんな新しい機能が加わったの?, どんな機能が変更されたの?, 実装されていないレガシーな Vim の機能は?, 削除された Vim の機能は? といったことに関する情報は :help vim_diff.txt で見れます.

そもそも Vim を今まで使ったことがなく, Neovim を新しく使い始めるという方で, どのように操作したらいいのかわからないという方は, まずターミナルのプロンプトに nvim と入力して Neovim を起動させ, 画面中央に Neovim のバージョンが表示されると思いますので, : を押してコマンドラインモードにして, help と打って Vim の網羅的なヘルプを表示させるか, もしくは Tutor と打って Vim の基本的な操作方法を実地で学べるチュートリアルを始めることができます.

:Tutor コマンドは Vim, Neovim が初めてという方には本当におすすめです. 僕も Vim を使い始めた時は本当にお世話になりました. 一つ一つの事をサクッと学べるので, まさにチュートリアルです.

Neovim つまりは Vim はよく学習曲線が急すぎて初心者には厳しいというような意見をネットの掲示板でよく見かけますが, 一度そのチュートリアルをやってしまうと, とりあえずテキストを編集するということだけでしたらそれほど難しいくないということに気づかれるかと思います.

ただ Neovim は GUI ではなく CLI なので, マウス操作ではなくキー操作をメインに操作しなくてはいけないということが一般的な GUI テキストエディタとの違いになります.

確かに h, j, k l キーによるカーソル操作は初めは違和感この上ないと思いますが, 慣れてくると逆に普通の矢印キーでカーソルを動かすのが面倒だと感じることになってしまうこと必死です.

もしターミナルから直接そのチュートリアルを開きたいという場合は, ターミナルプロンプトに nvim +Tutor と打ち込むと直接開くことができます.

ただ Neovim のチュートリアルの言語は今の所英語のみのようなので, もし日本語のチュートリアルを見たいという方は, Neovim ではなく Vim のチュートリアルを見るという手があります.

Vim のチュートリアルを開く場合, ターミナルで vimtutor と入力すると開くことができるのですが, macOS の言語設定が日本語でないと日本語で表示されません.

もし macOS の言語設定が英語でも vimtutor で Vim のチュートリアルを日本語で開きたいという場合は, 環境変数 LANG を次のように .bashrc もしくは .zshrc に定義して, source ~/.bashrc もしくは source ~/.zshrc で読み込み直す必要があります:

export LANG=ja_JP.UTF-8

という感じになります.

今回は本当に Neovim の初期設定のみですが, 皆さんがより良く Neovim を使い始められる事を祈っております.