6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsで快適なターミナル環境を作る

Last updated at Posted at 2018-09-24

WindowsでもMacのようなターミナル環境がほしいと思い試行錯誤したが, やっと落ち着いた.
ほしい機能は以下の通り.

  • Linuxコマンドが使える
  • タブが使える
  • Emacsで不便にならない
  • Anacondaのpythonを呼べる

※pyenv版の設定はこちら

fatty.png
※ユーザ名はモザイクかけてあります.

2024年1月 追記: Windows TerminalにCygwinを設定するのが素直な方法になった
以下はsettings.jsonの変更メモ

        {
            "command": "newTab",
            "keys": "alt+t"
        },
        {
            "command": "closeTab",
            "keys": "alt+w"
        }
            {
                "commandline": "C:\\cygwin64\\bin\\bash.exe --login -i",
                "icon": "C:\\cygwin64\\Cygwin-Terminal.ico",
                "name": "Cygwin"
            }

ターミナル環境を作る

Cygwin, Fatty, Winptyにより自分の満足する環境を作る.

Cygwin

CygwinはLinuxコマンドを使えるようにするもの.

今回必要なものは以下の通り.

  • make
  • gcc-core
  • gcc-g++
  • gdb
  • mingw64-x86_64-gcc-g++
  • mingw64-i686-gcc-g++

これらはCygwinインストーラーから導入できる.
Cygwinの環境構築に関しては, こちらを参照.

Fatty

Fattyは, Cygwinをタブ化するもの.
https://github.com/juho-p/fatty からzipをダウンロードしてコンパイルする.
zip展開後, makeと打てばsrc内にfatty.exeが作成される.

Fattyのタブに関するデフォルトのコマンドはやや使いにくく,
Shift + 矢印がEmacsで使えなくなるのは痛いので, 下記の通り変更.

機能 元コマンド 変更後
新規タブ Ctrl + Shift + T Alt + T
タブ終了 Ctrl + Shift + W Alt + W
タブ切り替え Shift + →, ← Alt + →, ←
タブ移動 Ctrl + Shift + →, ← Ctrl + Alt + →, ←

変更方法は, どこを探しても見当たらなかったため, src/wininput.cを直接書き換えた.
エディタでwin_tab_changewin_tab_createで検索をかければ変更箇所はすぐにわかる.

(変更箇所1) Before
before1.png
(変更箇所1) After
after1.png

(変更箇所2) Before
before2.png
(変更箇所2) After
after2.png

コンパイル後, Windowsのショートカット作成機能から,
C:\fatty-master\src\fatty.exe -e bash --login -i
を作成する. (fatty.exeへのパスは人それぞれ)
(注意) --loginが無いと, Cygwinの.bashrcを読んでくれない.

Winpty

上記の設定のままでは, pythonを呼んだときにCygwinのpythonが呼ばれてしまう.
Anacondaのパスを通しても, cygwinから呼ぶと応答が返ってこない.
そこでWinptyでwrapしてやる必要がある.

https://github.com/rprichard/winpty からzipをダウンロード後, 展開して, ./configureしてmake.
build内のwinpty.exeを適当なところに移動.

.bashrcに以下を追加. (winptyへのパスは人それぞれ)

ANA_PATH=/cygdrive/c/Users/(ユーザ名)/Anaconda3
export PATH=$ANA_PATH:$ANA_PATH/Library/bin:$ANA_PATH/Scripts:$PATH
alias 'python'='/cygdrive/c/winpty-master/build/winpty.exe python'
alias 'ipython'='/cygdrive/c/winpty-master/build/winpty.exe ipython'

また, Octaveも同様にoctave-cli.exewinptyでwrapしてやることで, octaveと打つだけで使えるようになる.

alias 'octave'='/cygdrive/c/winpty-master/build/winpty.exe /cygdrive/c/Octave/Octave-4.4.0/bin/octave-cli.exe'

2022/12/30追記

cygwin最新版でwinptyがコンパイルエラーになるようになった。
エラー部分をコメントアウトしても正常に動かなかったため、使用をやめた。
普通のwindows版pythonではwinptyを使わずとも.bashrcにパスを与えるだけで動くことを確認した。
(現CygwinバージョンでAnacondaを動かすとどうなるかは確認していない)

PY_PATH="/cygdrive/c/Users/(ユーザー名)/AppData/Local/Programs/Python/Python39"
export PATH=$PY_PATH:$PY_PATH/Scripts:$PATH

なお、cygwin同梱のpythonでは、psutilのpip installがうまくいかず、jupyterを入れることはできなかった。

参考URL

こういう解決法を最初に思いつく人ってすごい.

おまけ

この環境にたどり着くまでに試したこと

  • WSL (Windows Subsystem for Linux)
  • Windows側との連携がいまいち
  • タブがない
  • Cmder
  • Emacsで→でキャレットを移動中テキストが消えていく
6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?