MSYS2 を使って、Windows 7 にターミナル環境を構築しました。その時のおおまかなポイントを書きたいと思います。
MSYS2というのは、Windows上にUNIXライクな環境を導入するソフトウェアです。
目次
1. 導入するソフトウェア
- MSYS2 installer
- 今回は、64ビット版 (msys2-x86_64-20160205.exe) を使用します。
2. 導入手順
MSYS2 installer に書いてある通り進めます。
- Windows上のユーザー環境変数として、HOMEを作っておきます。
- 変数名: HOME
- 値: C:\Users\foo
- MSYS2 installer から、msys2-x86_64-20160205.exe をダウンロードしてインストールします。
- デフォルトでは
C:\msys64
にインストールされます。 - 特に迷うところはないと思います。
- インストールの最後の画面にある「Run MSYS2 now」のチェックボックスをオンのままにしておきます。
- デフォルトでは
- MSYS2が起動されますので、以下のコマンドを入力して実行します。コマンド その1
$ pacman -Sy pacman
コマンド その2
$ pacman -Syu - - - 省略 - - - WARNING: the shell starting scripts have been unified. Please update your shortcuts to the following targets, otherwise they will STOP WORKING: * MSYS2_ROOT\msys2_shell.cmd -mingw32 * MSYS2_ROOT\msys2_shell.cmd -mingw64 * MSYS2_ROOT\msys2_shell.cmd -msys - - - 省略 - - - 警告: terminate MSYS2 without returning to shell and check for updates again 警告: for example close your terminal window instead of calling exit
いろいろ警告が出ますが問題ないようです。右上のバツボタンを押してウィンドウを閉じます。
また、ここで説明文が表示されていますが、以前あった3つの起動バッチファイルは、1つに統合されたようです。
コマンド その3
$ pacman -Su
いくつか質問されまずが、Enterを押して進めましょう。
- 欲しいパッケージをインストールします。例えば以下のようにして、man, openssh, tmux, gitをインストールします。
$ pacman -S man $ pacman -S openssh $ pacman -S tmux $ pacman -S git
/etc/fstab
に以下を追記します。sshコマンドで使用する鍵ファイルを置くディレクトリを統一するために以下を追記します。C:/Users/ユーザ名 /home/ユーザ名
3. MSYS2を起動するバッチファイルについて
以前はMSYS2が3種類の起動用バッチファイルを用意していて、ユーザーはそれらを使い分けるということになっていました。
しかし、現在のバージョン(msys2-x86_64-20160205.exe)では C:\msys64\msys2_shell.cmd
というバッチファイルが
1つだけ用意されており、引数で3つの環境の中から1つを指定して起動して下さいということのようです。
以下のように引数を使い分けて、3種類の方法でターミナルを起動することができます。
- > C:\msys64\msys2_shell.cmd -mingw32
- 環境変数 PATHに、
/mingw32/bin
が追加されます。 - Windows用のプログラムをコンパイルする場合に使用します。
- unameコマンドの出力は、”MINGW32_NT-6.1″ です。
- 環境変数 PATHに、
- > C:\msys64\msys2_shell.cmd -mingw64
- 環境変数 PATHに、
/mingw64/bin
が追加されます。 - Windows用のプログラムをコンパイルする場合に使用します。
- unameコマンドの出力は、”MINGW64_NT-6.1″ です。
- 環境変数 PATHに、
- > C:\msys64\msys2_shell.cmd -msys
- 環境変数 PATHに、
/opt/bin
が追加されます。 - MSYS2の環境で使用するプログラムをコンパイルする場合に使用します。
- unameコマンドの出力は、”MSYS_NT-6.1″ です。
- 環境変数 PATHに、
基本的には -msys
を使い、必要な場合にのみ /mingw64/bin
にパスを通しておけばよいと思います(引数なしだと -msys
になるようです)。
起動用バッチファイルの例
使いたい引数の行だけコメントを外して使います。
@echo off
REM call C:\msys64\msys2_shell.cmd -mingw32
REM call C:\msys64\msys2_shell.cmd -mingw64
call C:\msys64\msys2_shell.cmd -msys
4. mintty の設定
MSYS2はデフォルトだと、ターミナルエミュレータとして minttyが使用されます。
ConEmuなども使えます(実際 msys2\_shell.cmd
ファイルの中には ConEmu用の記述もあります)が、minttyで問題ないと思います。
色の設定
minttyで見た目の色を設定するには、mavnn/mintty-colors-solarized を使うとラクです。
sol.light
ファイルか sol.dark
ファイルをダウンロードして、どこかのパスに置いておき。以下のコマンドで読みこめば色の設定が反映されます。
$ source ~/path/to/sol.light
or
$ source ~/path/to/sol.dark
通常は、.bashrc に書いておくことになると思います。
5. 操作における注意点
- 対話型の操作を伴うコマンドを実行する場合は、winptyコマンドに渡して実行します。例
$ winpty cmd
6. ~/.profile, ~/.bashrc の設定
~/.profile
の例if [ `uname` = "MSYS_NT-6.1" -o `uname` = "MINGW32_NT-6.1" -o `uname` = "MINGW64_NT-6.1" ]; then # デフォルトのエディタを Windows用のVimに設定する export EDITOR="path/to/vim74-kaoriya-win64/gvim.exe" # パスを追加する export PATH="$HOME/bin:${PATH}" fi
~/.bashrc
の例if [ `uname` = "MSYS_NT-6.1" -o `uname` = "MINGW32_NT-6.1" -o `uname` = "MINGW64_NT-6.1" ]; then # gitkだけはWindows用のを使うのでエイリアスを作っておく alias gitk="/c/Program\ Files/Git/cmd/gitk" # mintty用の色設定ファイルが存在したら読み込む if [ -f path/to/sol.dark ];then source path/to/sol.dark fi fi
7. tmuxの設定
~/.tmux.conf の設定
- 設定例
# プレフィックスキー C-t unbind C-b set-option -g prefix C-t bind-key C-t send-prefix # マウスを有効にする set -g mouse on # 色の設定 set-option -g status-interval 2 set-option -g status-justify "centre" set -g status-bg "colour238" set -g status-fg "colour255" set -g status-left-length 20 set-option -g status-left "#[fg=colour255,bg=colour241]Se:Wi:Pa=#S:#I:#P #[default]" set -g status-right-length 60 set-option -g status-right "#[fg=colour255,bg=colour241] host:#h %m月%d日 %H:%M#[default]"
参考
- tmux の status line の設定方法 – Qiita
- erikw/tmux-powerline: Statusbar configuration for tmux that looks like vim-powerline and consist of dynamic segments.
- こちらを導入するのもありだと思います。
デフォルトのキーバインド
メモ
- 以前のバージョンであれば、tmuxでウィンドウを生成する時にカレントパスを引き継ぐことができましたが、
今回インストールしたバージョン2.2ではできなくなっているようでした。
8. その他
Windows用をインストールして使うアプリケーション
以下のアプリケーションは、MSYS2 の pacmanコマンドでインストールしたものより Windows用のアプリケーションをそのまま使った方がラクでした。
- Vim
- Node.js
- etc.
メモ
- 私がアプリケーションをインストールする時は、なるべくWindows用のアプリケーションを優先して使っています(pacmanコマンドでのインストールではなく)。
分かりやすいことが優先なので、Chocolatey もできるだけ使わないようにしています。 - 何か1つのアプリケーションが使いたい場合に、Windows用のものとpacmanで入れるものとでどちらの使い勝手が
よいのかを調査していたのですが、かなり労力を要します。
9. まとめ
- 以前、PowerShell + ConEmu のターミナル環境で GitやNode.jsを使っていた期間があり、それも悪くなかったのですが、
UNIXライクな環境の方が慣れているため bash, grep, ssh, tmux 等が使える MSYS2の方がやはり便利に感じます。 - Cygwinと比較しても、MSYS2の方が操作や扱い方が分かりやすいです。特にパッケージの更新操作などは随分差を感じます。
(最近の Cygwinが改善されていたらすいません) - 今回の環境があれば、Windowsであってもかなり快適なターミナル生活が送れるのではないかと思います。
LinuxやMacのターミナルであれば調べる必要がないようなことを調べなければならず無駄な時間を使っているように
感じる時もありますが、一度環境ができてしまえばあとはラクでしょう。 - 但し、MSYS2のターミナルでは、ANSIエスケープコード(の色のコード)に対応していないWindows用コマンドを実行しても出力内容が色付きで表示されません。この点は残念ですが、他の利点を考えれば許容範囲だと思います。