ターミナルマルチプレクサ tmux をWindows+MSYS2+tmuxinator導入(zsh)

自宅のクライアント環境は、Win10+Macなのですが、社内がWin7。
これまでは…Windows=puttyで、Mac=iTermの環境でした。

また、Mac内でもvimなどを使うので、厳密にいうと…
・Windows+putty+Linux環境
・Mac+iTerm+Linux環境
・Mac+iTerm環境
この3つの環境で、Vimなどを利用してます。
Win10に統一されれば、Win10環境で “Bash on Ubuntu on Windows” の環境を作るのですが。。

これまで、puttytabなどは使ってました。
が、それではMacで使えない。
iTermは凄くいい感じなんですが、当然Windowsには無い。

これって、すごく無駄というか… 面倒。
そこで!tmux。
たまたま見つけて、去年くらいから少し利用してますが、いい感じです。

そこで、以下の構成で統一感を出す!というイメージで 手順を残しておこうと思います。

・Windows環境
Win7 – MinGWを利用(MSYS2)
Win10 – Bash on Ubuntu on Windows
・Mac環境
iTermですべて

と、いうわけで Windows環境(Win7)で tmux を使えるようにして行きます。

・MSYS2のインストール
MSYS2 のインストーラ “msys2-x86_64-*.exe” を以下からダウンロード。
MSYS2

インストーラを実行してインストール。
MSYS2 の起動アイコンは “MSYS2 Shell”、”MinGW-w64 Win64 Shell”、”MinGW-w64 Win32 Shell” の 3つ。
MSYS2 と別に MinGW をインストールするのであれば、”MSYS2 Shell” を使う。
MSYS2 でインストールした MinGW 64 bit 版を使うのであれば、”MinGW-w64 Win64 Shell” を利用しましょう。

インストール後、インストールフォルダの bin フォルダをパスに追加。
インストールパスに空白を含むと問題が起る場合があるので、”C:\” の直下に入れることにする。

– MSYS2 は、開発環境を含まないので、私の場合 必然的に、利用するのは “MinGW-w64 Win64 Shell” になります。
– もしも、MinGWを単独で入れたい方は…
— MinGW/64bitのインストール
— MinGW 64 bit 版のインストーラ “mingw-w64-install.exe” を以下からダウンロード。
MinGW-w64 – for 32 and 64 bit Windows

では、mingw64.exeを “管理者として実行” 後、セットアップしていきます。
・まずは、パッケージをアップデート

$ pacman -Su

・開発環境パッケージをインストール
MSYS2 で MinGW などの開発環境を導入します。

$ pacman -S base-devel
$ pacman -S msys2-devel
$ pacman -S mingw-w64-x86_64-toolchain

“パッケージセットの中で、どれを入れるの?” 的なウィザードは、”all” で大丈夫です。
100パッケージ以上を入れますので、コーヒーでも飲んでお待ちを。

ターミナルのmintyでは、対話式プログラムで問題をよく起こすようです。
そこで、
・pythonなどの対話式プログラム対策に、”winpty” をインストール

$ pacman -S winpty

・alias設定

alias python='winpty python'

・あとは、お好みで必要なものを

$ pacman -S <<package...>>

さて。
いよいよ、tmuxを入れていきます。
MacだとHomebrewでサクっとインストール可能です

・tmuxのインストール

$ pacman -S tmux

2017/03/15現在、2.1.263が最新のようです。

続いて、tmuxinatorなどを入れていきます。
tmuxinatorは、ターミナルの画面情報(ペイン)を記憶してくれたり、起動時にペイン単位でコマンドがプレ実行出来るものです。
これが…便利すぎるのです。

・事前に、rubygemsをインストール

$ pacman -S rubygems

・本命のtmuxinatorをインストール

$ gem install tmuxinator

Windowsファイアウォールの確認画面が出ると思いますので、許可してあげてください。

以下のエラーが出る場合は、環境変数にパスが追加されていません。

WARNING: You don’t have /home/hogehoge/.gem/ruby/<>/bin in your PATH,
gem executables will not run.

Windowsの環境変数に、PATHを通してあげましょう。

さらに、以下のエラーが出る場合は、次の方法で対応してください。

ERROR: While executing gem … (Errno::ENOENT)
No such file or directory @ rb_file_s_symlink – (/home/hogehoge/.gem/ruby/2.6.10/gems/tmuxinator-0.9.0/completion/tmuxinator.fish, /home/hogehoge/.gem/ruby/2.6.10/gems/tmuxinator-0.9.0/completion/mux.fish)

この警告の理由は、Rubyの既知の問題です。
MSYS2環境にこだわる必要性は全くありませんので。Win10ならば、”Bash on Ubuntu on Windows” 使いましょう。

・Rubygemsアンインストール(混乱しないように)

$ pacman -R rubygems

RubyInstallerを利用
上記のURLから、RubygemsInstallerをダウンロードします。
その後、”パスを通す” にチェックを入れて、インストール。

RubygemsInstallerをインストール

$ wget https://rubygems.org/rubygems/rubygems-2.6.11.zip
$ unzip rubygems-2.6.11.zip
$ cd rubygems-2.6.11
$ /c/Ruby23-x64/bin/ruby setup.rb

実行前に、rubyに必ずパスを通しておいてください

$ ln -s /c/Ruby23-x64/bin/ruby.exe /usr/bin/ruby
$ ln -s /c/Ruby23-x64/bin/gem /usr/bin/gem

・MSYS2ターミナルで、tmuxinatorをインストール

$ gem install tmuxinator

    __________________________________________________________
    ..........................................................

    Thank you for installing tmuxinator.

    Make sure that you've set these variables in your ENV:

      $EDITOR, $SHELL

    You can run `tmuxinator doctor` to make sure everything is set.
    Happy tmuxing with tmuxinator!

    ..........................................................
    __________________________________________________________

Successfully installed tmuxinator-0.9.0
Parsing documentation for tmuxinator-0.9.0
Installing ri documentation for tmuxinator-0.9.0
Done installing documentation for tmuxinator after 0 seconds
1 gem installed

・最終、私の環境ではこちらの結果になります。

$ /c/Ruby23-x64/bin/ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]

$ /c/Ruby23-x64/bin/gem -v
2.6.11

$ whereis tmux
tmux: /usr/bin/tmux.exe /usr/share/tmux /usr/share/man/man1/tmux.1.gz

$ whereis tmuxinator
tmuxinator: /c/Ruby23-x64/bin/tmuxinator /c/Ruby23-x64/bin/tmuxinator.bat

tmuxinatorは、環境変数のEDITORと、SHELLを利用します。
以下で確認/変更しておきましょう。

・環境変数の確認/変更

$ echo $EDITOR
$ echo $SHELL

あとは、設定ファイルで、お好きなターミナル環境にしてくださいね。

$ vim ~/.tmux.conf
$ vim ~/.tmuxinator/<<Name>>.yml