powerline
pyenv
macvim

pyenv利用時のMacVim + powerline導入メモ

Introduction

Macbookを新調したので憧れのiTerm2 + zsh + tmux + vim環境を整えています。
powerlineを導入する際に少々苦戦したため覚書です。

Goal

zsh, tmux, vimに対しpowerlineを導入する。

How to

Python (pyenv)

pyenvをインストールします。

$ brew update
$ brew install pyenv
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
$ source ~/.zshrc
$ pyenv -v

via / pyenv/pyenv: Simple Python version management

python3.5.1をインストールします。
このとき、MacVimのビルドに必要なDLLを含めるように環境変数を設定します。
otoolでDLLのパスを確認できます。

$ PYTHON_CONFIGURE_OPTS="--enable-shared" \
    LDSHARED="clang -bundle" \
    LDCXXSHARED="clang++ -bundle" \
    BLDSHARED="clang -bundle -lpython3.5m" \
    pyenv install 3.5.1
$ otool -L $HOME/.pyenv/versions/3.5.1/lib/python3.5/lib-dynload/_ctypes.cpython-35m-darwin.so

via / MacVim with Python 2.x and Python 3.x

MacVim

macvimのリポジトリからソースコードを取得します。

$ brew tap macvim-dev/macvim
$ brew edit macvim-dev/macvim/macvim

MacVimのビルド引数を編集します。
HomeBrewのpythonを見ているので、pyenvでインストールしたpythonのパスに変更します。

# ENV.append 'vi_cv_path_python3', "#{HOMEBREW_PREFIX}/bin/python3"
# ENV.append 'vi_cv_dll_name_python3', "#{HOMEBREW_PREFIX}/Frameworks/Python.framework/Versions/3.5/Python"
ENV.append 'vi_cv_path_python3', "/Users/<ユーザ名>/.pyenv/versions/3.5.1/bin/python3"
ENV.append 'vi_cv_dll_name_python3', "/Users/<ユーザ名>/.pyenv/versions/3.5.1/lib/libpython3.5m.dylib"

macvimをインストールします。

$ brew install --HEAD --with-properly-linked-python2-python3 --with-override-system-vim macvim-dev/macvim/macvim

via / HomebrewでインストールしたMacVimがpyenvのpythonでビルドされない問題を解決

powerline

$ pip install powerline-status
$ git clone https://github.com/powerline/fonts.git 
$ fonts/install.sh
$ rm -rf fonts

$ cp -r ~/.pyenv/versions/3.5.1/lib/python3.5/site-packages/powerline/config_files/* ~/.config/powerline

設定

zsh

~/.zshrc
powerline-daemon -q
. /Users/<ユーザ名>/.pyenv/versions/3.5.1/lib/python3.5/site-packages/powerline/bindings/zsh/powerline.zsh

tmux

~/.tmux.conf
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'
run-shell "powerline-daemon -q"
source "/Users/<ユーザ名>/.pyenv/versions/3.5.1/lib/python3.5/site-packages/powerline/bindings/tmux/powerline.conf"

vim

~/.vimrc
python3 from powerline.vim import setup as powerline_setup
python3 powerline_setup()
python3 del powerline_setup
set laststatus=2
set showtabline=2
set noshowmode

via / Powerline導入例

Conclusion

苦戦した原因は、MacVimを素でインストールするとpythonが実行できないという点でした。
またpyenvによるpythonのバージョン切替を行えるようにしていたためMacVimのビルド設定にも調整が必要でした。

改めて考えると
わざわざMacVimでなくてもよかったのでは・・・
powerline使うならVim 8.xでいいのでは・・・
Vimはvim-airline使えばよかったのでは・・・
など反省点は尽きません。

しばらくはiTerm2以外のGUIも頻繁に使うため、スタンドアロンで動くMacVimはひとまずアリかなと思いつつ、今後dotfile化させるためにも整理していきます。