Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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

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

ターミナル環境を作る

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'

参考URL

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

おまけ

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

  • WSL (Windows Subsystem for Linux)
    • Windows側との連携がいまいち
    • タブがない
  • Cmder
    • Emacsで→でキャレットを移動中テキストが消えていく
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした