Ubuntuでzsh+neovimの環境設定

# 経緯
* 私は前職SIerでWindowsばっかり
* 今は転職してITベンチャーでMacOSX,Linux
* 一応趣味でMacは使ってたがLinuxはそんなに(なおエセVimmer)
* 現職でLinuxの開発環境を用意しといたほうがいいよとアドバイスされる
* 構築してみて結構めんどかったので、今後のために備忘録

# 前提
* Ubuntu 16.04

# 注意
* 私のdotfilesを前提にしているのでコレを参考にしてインスコすると正常に動かないかも。
* 余裕があったら素のzshrcで動くようなものを書くかも。

# 目標
* zshのインストール
    * zplugでプラグイン管理できる
* neovimのインストール
    * dein.vimでプラグイン管理できる
    * denite.vim, deoplete.vimの使用を考慮してPython設定も実施

# 作業手順

## Git
プラグイン管理だのナンだのに使うので必須。apt-getするべし

```
$ sudo apt-get install git
```

## zsh
これがなくては始まらないので必須。apt-getするべし

```
$ sudo apt-get install zsh
```

デフォルトシェルをzshに変更。

```
# まずzshのパスを確認
$ which zsh
/usr/bin/zsh

# デフォルトシェル変更
$ chsh

# パスワード聞かれる
Password:

# 変更先パスに確認したzshパスを指定する
Changing the login shell for vagrant
Enter the new value, or press ENTER for the default
        Login Shell [/usr/bash]:/usr/bin/zsh
```

## 言語設定
apt-getが言語設定で詰まることもあるのでやっとく。`~/.zshrc`に以下を追記

```~/.zshrc
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8
```

日本語で使うなら`language-pack-ja`が必要apt-getするべし

```
$ sudo apt-get install language-pack-ja
```

一応日本語版の`~/.zshrc`も書いとく

```~/.zshrc
export LANGUAGE=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
```

再読込

```
$ source ~/.zshrc
```

## zplug
zshのプラグイン管理したいなら必須。インストールすべし。
参考資料は以下。抜粋した手順を書いときます。
[zplug/zplug]
https://github.com/zplug/zplug

デフォルトだとcurlが入ってないのでapt-get

```
$ sudo apt-get install curl
```

zplugインストール

```
$ curl -sL --proto-redir -all,https https://zplug.sh/installer | zsh
```

zplug読み込みを`.zshrc`に追加

```
$ echo 'source $HOME/.zplug/init.zsh' >> ~/.zshrc
```

## pyenv, pyenv-virtualenv
NeovimにはPython3が必須。
そして後々vNeovimにPython2系とPython3系のパスを指定する必要がある。
そのためにpyenvとpyenv-virtualenvがあったほうが便利。詳しくはググってくれたまえ。

* pyenv:　Pythonのバージョン管理ができる(異なるバージョンのPythonが使えるぞ)
* pyenv-virtualenv:　目的別にPythonの仮想環境を作成し切り替えができる(Neovim専用のPython領域が作れるぞ)

### pyenv
参考資料は以下。抜粋した手順書いときます。
[pyenv/pyenv]
https://github.com/pyenv/pyenv

```
# gitから落としてくる
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

# pyenvをPATHに追加
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

# pyenv初期化処理を追加
$ echo 'source' >> ~/.zshrc

# 再読込
$ source .zshrc
```

実行確認してpyenv認識してたらOK

```
$ pyenv
pyenv 1.0.10-2-geef042a
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
```

### pyenv-virtualenv
参考資料は以下。抜粋した手順を書いときます。
[pyenv/pyenv-virtualenv]
https://github.com/pyenv/pyenv-virtualenv

```
# gitから落としてくる
$git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

# pyenv-virtualenv初期化処理を追加
$echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc

# 再読込
$ source .zshrc
```

実行確認してpyenv-virtualenv認識してたらOK

```
$pyenv virtualenv --help
Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] <virtualenv-name>
       pyenv virtualenv --version
       pyenv virtualenv --help

  -f/--force       Install even if the version appears to be installed already
```

## Python3
neovimのインストールにPython3が必要(だったはず)。pyenv経由でインストール。

```
# インストール可能なPythonのバージョンを確認
$ pyenv install --list

# インストール(ex:3.5.3の場合)
$ pyenv install 3.5.3

# バージョン切り替え
$ pyenv global 3.5.3

# バージョン確認
$ python --version
Python 3.5.3
```

## neovim
お待たせしましたvimです。言わずもがな必須。
参考資料は以下。抜粋した手順を書いときます。
[Installing Neovim]
https://github.com/neovim/neovim/wiki/Installing-Neovim

```
# neovimのリポジトリはデフォルトではapt-getにない。
# apt-getのリポジトリを追加するためadd-apt-repositoryが必要なのでインストール
$ sudo apt-get install software-properties-common

# 古いバージョンのUbuntuだとpython-software-propertiesが必要らしい
# 必要ないかもしれないけど一応インストール
$ sudo apt-get install python-software-properties

# neovimのリポジトリをapt-getに追加
$ sudo add-apt-repository ppa:neovim-ppa/stable

# リポジトリ更新
$ sudo apt-get update

# neovimインストール
$ sudo apt-get install neovim

# neovim設定ファイルを作っておく
$ mkdir -p ~/.config/nvim
$ touch ~/.config/nvim/init.vim
```

## neovim用のPython
neovimから参照するPythonをpyenv-virtualenvを使って作っておく。
参考資料は以下。抜粋した手順を書いときます。
[Setting-up-Python-for-Neovim]
https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim

```
$ pyenv install 2.7.13
$ pyenv install 3.5.3

$ pyenv virtualenv 2.7.13 neovim2
$ pyenv virtualenv 3.5.3 neovim3

$ pyenv activate neovim2
$ pip install neovim
$ pyenv which python
/home/vagrant/.pyenv/versions/neovim2/bin/python # メモっとく

$ pyenv activate neovim3
$ pip install neovim
$ pyenv which python  # Note the path
/home/vagrant/.pyenv/versions/neovim3/bin/python # メモっとく
```

メモったやつをneovimのオプションに設定

```init.vim
let g:python_host_prog = '/home/vagrant/.pyenv/versions/neovim2/bin/python'
let g:python3_host_prog = '/home/vagrant/.pyenv/versions/neovim3/bin/python'
```