Tools

Windows 7 のターミナル設定(MSYS2編)

投稿日:2016年6月14日 更新日:

msys2_terminal

MSYS2 を使って、Windows 7 にターミナル環境を構築しました。その時のおおまかなポイントを書きたいと思います。

MSYS2というのは、Windows上にUNIXライクな環境を導入するソフトウェアです。

Windows 10 の場合は、MSYS2 の代わりに WSL(Windows Subsystem for Linux) が使えます。
Windows

WSL (Windows Subsystem for Linux) の導入と設定

2017.07.12

1. 導入するソフトウェア

  • MSYS2 installer
    • 今回は、64ビット版 (msys2-x86_64-20160205.exe) を使用します。

2. 導入手順

MSYS2 installer に書いてある通り進めます。

  1. Windows上のユーザー環境変数として、HOMEを作っておきます。
    • 変数名: HOME
    • 値: C:\Users\foo
  2. MSYS2 installer から、msys2-x86_64-20160205.exe をダウンロードしてインストールします。
    • デフォルトでは C:\msys64 にインストールされます。
    • 特に迷うところはないと思います。
    • インストールの最後の画面にある「Run MSYS2 now」のチェックボックスをオンのままにしておきます。
  3. 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を押して進めましょう。

  4. 欲しいパッケージをインストールします。例えば以下のようにして、man, openssh, tmux, gitをインストールします。
    $ pacman -S man
    $ pacman -S openssh
    $ pacman -S tmux
    $ pacman -S git
    
  5. /etc/fstab に以下を追記します。sshコマンドで使用する鍵ファイルを置くディレクトリを統一するために以下を追記します。
    C:/Users/ユーザ名 /home/ユーザ名
    

3. MSYS2を起動するバッチファイルについて

以前はMSYS2が3種類の起動用バッチファイルを用意していて、ユーザーはそれらを使い分けるということになっていました。
しかし、現在のバージョン(msys2-x86_64-20160205.exe)では C:\msys64\msys2_shell.cmd というバッチファイルが
1つだけ用意されており、引数で3つの環境の中から1つを指定して起動して下さいということのようです。

以下のように引数を使い分けて、3種類の方法でターミナルを起動することができます。

  1. > C:\msys64\msys2_shell.cmd -mingw32
    • 環境変数 PATHに、/mingw32/bin が追加されます。
    • Windows用のプログラムをコンパイルする場合に使用します。
    • unameコマンドの出力は、”MINGW32_NT-6.1″ です。
  2. > C:\msys64\msys2_shell.cmd -mingw64
    • 環境変数 PATHに、/mingw64/bin が追加されます。
    • Windows用のプログラムをコンパイルする場合に使用します。
    • unameコマンドの出力は、”MINGW64_NT-6.1″ です。
  3. > C:\msys64\msys2_shell.cmd -msys
    • 環境変数 PATHに、/opt/bin が追加されます。
    • MSYS2の環境で使用するプログラムをコンパイルする場合に使用します。
    • unameコマンドの出力は、”MSYS_NT-6.1″ です。

基本的には -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でウィンドウを生成する時にカレントパスを引き継ぐことができましたが、
    今回インストールしたバージョン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用コマンドを実行しても出力内容が色付きで表示されません。この点は残念ですが、他の利点を考えれば許容範囲だと思います。

10. 参考サイト

📂-Tools
-

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Windows

Google の「バックアップと同期」で同期エラーになった時の対応

目次1. はじめに2. 同期エラーの状況3. 対応方法4. おわりに 1. はじめに ローカルのデータを、Google ドライブと同期させる「バックアップと同期」というアプリケーションがあります。 最 …

Anki

Anki: 新しい復習間隔は 0% が良い

Ankiの設定項目「新しい復習間隔」についての持論です。

Anki

Anki で JavaScript を使う

Anki で JavaScript を使うことに関して思っていることを書きました。

Evernote

【Evernote】検索でヒットするはずのノートが、ヒットしない場合の対処法

【Evernote】検索しても、特定のノートがヒットしない場合の対処法について説明します。

Linux

scp の代わりとしての rsync コマンドとそのオプション

1. はじめに scp コマンドというのは、ssh コマンドを内部で使って、ローカルホストとリモートホスト間でファイルをコピーするためのコマンドです。ssh コマンドは SSH という暗号化された安全 …