Windowsで快適なターミナル環境を作る
WindowsでもMacのようなターミナル環境がほしいと思い試行錯誤したが, やっと落ち着いた.
ほしい機能は以下の通り.
- Linuxコマンドが使える
- タブが使える
- Emacsで不便にならない
- Anacondaのpythonを呼べる
※pyenv版の設定はこちら
ターミナル環境を作る
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_change
やwin_tab_create
で検索をかければ変更箇所はすぐにわかる.
コンパイル後, 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.exe
をwinpty
で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で→でキャレットを移動中テキストが消えていく
Author And Source
この問題について(Windowsで快適なターミナル環境を作る), 我々は、より多くの情報をここで見つけました https://qiita.com/birdwatcher/items/0265098e5f8c1e0f8aa4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .