neovimの最新版のインストールで詰まった話

# 結論
Ubuntuでのインストールの場合、ppaを使うか実行ファイルを直接インストールするかの2択です。メリット、デメリットは次のようになります。

### ppaによるインストール
- メリット
    - aptがバージョン管理してくれる -> 常に最新版を使える
- デメリット
    - apt updateが遅くなる(体感)

### 実行ファイルのインストール
- メリット
    - プレリリースを含め、好きなバージョンをインストールできる
    - バージョンを固定できる(勝手にアップデートされない)
- デメリット
    - バージョンの自動更新ができない

バージョンがアップデートされることでバグが発生する場合もあるので (neovimで聞いたことはないけど...)、特に理由がなければ実行ファイルのインストールをするのがおすすめです。

# 動機
なぜかプラグインの補完が使えなくて原因を調べたところ、使っているneovimのバージョンが古いせいだった。

**特に、Ubuntuで`sudo apt install neovim`とすると発生する。**`sudo apt install neovim`でインストールできるneovimのバージョンは執筆段階だと0.6.1。最新のバージョンは0.10.2なのでかなり古いことが分かる。

# 行った作業
英語が読める人はneovimの公式ページがとても参考になります。

https://github.com/neovim/neovim/blob/master/INSTALL.md

これだけだと味気ないのでUbuntuでのインストール方法をLinuxに慣れていない方向けに説明しておきます。

## ppaによるインストール

まずは`add-apt-repository`コマンドをインストールします。

- Ubuntuのバージョンが新しい場合
```bash
sudo apt-get install software-properties-common
```

- Ubuntuのバージョンが古い場合
```bash
sudo apt-get install python-software-properties
```
で`add-apt-repository`をインストールしましょう。

後は次のコマンドでインストール完了です。
```bash
sudo add-apt-repository ppa:neovim-ppa/stable
sudo apt-get update
sudo apt-get install neovim
```

このままだとPythonサポートを受けられないので、neovim内で`:Python`を使いたい場合は次のスクリプトも実行しましょう。

- Ubuntuのバージョンが新しい場合
```bash
sudo apt-get install python-dev python-pip python3-dev python3-pip
```
- Ubuntuのバージョンが古い場合
```bash
sudo apt-get install python-dev python-pip python3-dev
sudo apt-get install python3-setuptools
sudo easy_install3 pip
```
## 実行ファイルのインストール
### ファイルのダウンロード
Ubuntuに限らずLinuxであれば、以下のコマンドを打ち込むことで/opt/nvim-linux64/bin/nvimにneovimの実行ファイルをインストールできます。
```bash
wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
sudo rm -rf /opt/nvim
sudo tar -C /opt -xzf nvim-linux64.tar.gz
```
Linuxに慣れていない方のために簡単に説明します。
- 一行目: wgetはインターネットからファイルを持ってこれるコマンドです。結構便利です。今回はnvim-linux64.tar.gzという圧縮ファイルを持ってきます。zipファイルみたいなものです。
- 二行目: /opt/nvimを削除します。消しても大丈夫か一応確認するとよいです。
- 三行目: nvim-linux64.tar.gzを展開します。

このように圧縮ファイルを持ってきて展開しているだけで実行ファイルをインストールできます。実際に`/opt/nvim-linux64/bin`の中身を確認してみると、`nvim`という実行ファイルがあると思います。また、`/opt/nvim-linux64/bin/nvim`と入力すると`nvim`が起動できると思います。

毎回`/opt/nvim-linux64/bin/nvim`と入力するのは面倒なのでパスを通していきます。パスを通すと`nvim`と入力したとき、Linuxが`/opt/nvim-linux64/bin/`の中を自動で探してくれるようになります (もちろんその中に`nvim`ファイルがあるので実行してくれます)。

### パスを通す
パスはbashを使っていれば`~/.bashrc`の最後に、zshを使っていれば`~/.zshrc`の最後に以下を記述して追加できます。
```bash
export PATH="$PATH:/opt/nvim-linux64/bin"
```
パスというのは、linuxがコマンドを探すディレクトリのことです。例えば普段`ls`などのコマンドを使っているかと思いますが、`ls`と入力したときlinuxは`ls`コマンドをいろんなところ(例えば`/usr/bin/`や`/usr/local/bin`など)から探します。この探しているディレクトリ群をパスといいます。試しに`echo $PATH`と入力すると、`/usr/bin/:/usr/local/bin`のようにディレクトリが:区切りで並んでいると思います。

`~/.bashrc`に`export PATH="$PATH:/opt/nvim-linux64/bin"`を追記すると、この探索場所に`/opt/nvim-linux64/bin`を追加することができます。これによって`nvim`と入力したときにlinuxが`/opt/nvim-linux64/bin`を探索し`/opt/nvim-linux64/bin/nvim`を見つけて実行してくれます。

また、シンボリックリンクを使う方法もあります。その場合は以下のコマンドを実行してください。
```
sudo ln -s /opt/nvim-linux64/bin/nvim /usr/local/bin/nvim
```

このコマンドを実行すると`/usr/local/bin`ディレクトリに`nvim`ファイル(シンボリックリンク)が作成されます。このファイルは`/opt/nvim-linux64/bin/nvim`へのリンクとなっており、`/usr/local/bin/nvim`と`/opt/nvim-linux64/bin/nvim`が全く同じような働きをします。`/usr/local/bin`ディレクトリは基本的に始めからパスが通っているのでこれで`nvim`コマンドが実行できるようになります。より詳しく知りたい方はシンボリックリンクで調べてみてください。

# まとめ
今回はUbuntuでよく陥りがちなneovimのバージョン問題とその解決方法について説明しました。基本的にはどのLinuxでも対応できる、実行ファイルのインストールによる方法を私はおすすめしておきます。neovimはバージョン0.9や0.10になっていろんな機能が追加されてめざましい発展を遂げているので、最新のneovimを楽しんでください!