いい感じのCLI開発環境 

# 概要
マウスでぽちぽちやるのがなんか遅いっぽいので、開発最速理論を考案しました。
要約すれば以下のアプリケーションをインストールしてCLIベースで開発しようって内容です。

* [Chocolatey](https://chocolatey.org)
* [PowerShell](https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-scripting)
* [Hyper](https://hyper.is/)
* [Midnight Commander](https://midnight-commander.org/)
* [Neovim](https://neovim.io/)

# コンセプト
* CLI万歳
* 環境に依存しない : Windows/Linux で再現可能
* 短時間で再現可能 : 15分ぐらい


# 経緯
学生の頃はカスタムしまくったLinuxを使っていたため、会社に入ってからWindowsを使い始めたころは幻肢痛に苦しみました。
もう二度と苦しみたくないと思い、ほぼバニラWindowsをマウスでぽちぽちしながら使っていたわけですが、そろそろやべー奴扱いされそうなので良さげな環境を整えるため一念発起しました。

# 本編
## 1.Chocolatey : https://chocolatey.org
Linux/Macの人は飛ばしてください。

ChocolateyはWindows用のパッケージマネージャです。
Linuxではターミナルに`apt install python`とか`pacman -S python`みたいに入力してアプリケーションをインストールすることができます。
WindowsでもChocolateyをインストールすることでターミナルから`choco install python`みたいに入力してアプリケーションをインストールできるようになります。

### Chocolateyインストール手順
1. 管理者権限でPowerShellを起動
2. PowerShellに以下をコピペして実行
    - `Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))`

### 使い方
管理者権限でPowerShellを開き`choco install <アプリケーション名>`のようにコマンドを実行することでアプリケーションをインストールできるようになります。
わざわざWebサイトに赴いてZipとかexeを落として実行するという面倒な手間を踏む必要がなくなります。
かなり時短できます。








## 2.PowerShell : https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-scripting
Windowsはデフォルトで入っているので飛ばしてください。

PowerShellはオープンソース、クロスプラットフォームの素晴らしいシェルです。
パイプには文字列ではなく、オブジェクトが流れます。
超プログラムしやすいです。Linux環境でも使っていきましょう。(布教)

### インストール手順
以下URLを参照してください。
https://docs.microsoft.com/ja-jp/powershell/scripting/setup/installing-powershell-core-on-linux
ArchLinuxにインストールする方法は記事にしました↓
https://qiita.com/Y0KUDA/items/5c50f580392d096e78fe
ArchLinux大好き。


## 3.Hyper : https://hyper.is
ターミナルエミュレータなんて世の中に腐るほどあるけど、

* Windows/Linuxで使える
* タブが使える
* スプリットできる

って三拍子揃ったのってそんなにないと思います。
LinuxにはTerminatorとかtmuxっていう素晴らしいアプリケーションが存在するけど、
これをWindowsで使うにはX Windowのクライアントを用意しなきゃいけないから面倒なことこの上ない。
ということでHyperを採用しました。

こんな感じのアプリケーションです。↓
![スクリーンショット (6).png](https://qiita-image-store.s3.amazonaws.com/0/275289/297dfd8d-60a4-7d73-efd7-7cab6ffc9db5.png)
動かすとこんな感じ↓
![ezgif-4-ff9371b8d0.gif](https://qiita-image-store.s3.amazonaws.com/0/275289/fd0515d1-4f6c-66e7-f92f-18f6b6205882.gif)


### インストール手順
#### Windows
1. PowerShellを管理者権限で起動
2. PowerShellに`choco install hyper`と入力
3. 適宜環境変数を追加してください。
4. `hyper`で起動できます。

#### Linux / MacOS
ArchLinuxは以下のコマンドでインストールできました。

```shell
pacman -S hyper
```
MacOSと他のディストリビューションは以下URLからパッケージをダウンロードしてインストールする必要があるみたいです。
https://hyper.is/#installation

### セッティング
起動時にお好みのシェルが起動するようにセッティングします。
ホームディレクトリにある`.hyper.js`を変更します。
`shell:`を検索して、利用したいシェルのパスを記述します。
WindowsでPowerShellを利用する場合以下のように変更します。

```javascript
shell: 'C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe',
```
次に、シェルを起動するときの引数を設定します。
`shellArgs`を変更します。
WindowsでPowerShellを使う場合は引数は不要なので以下のように空にします。

```javascript
shellArgs: [],
```

ついでに、快適に使うためにプラグインを一つ加えておきます。
`plugins:`を検索して以下のように書き加えます。

```javascript
plugins: ["hyper-pane"],
```

起動したときにプラグインのhyper-paneが自動的にインストールされます。

### 簡単な操作方法
だいたいこの辺りのショートカットを覚えておけば快適に使えます。

||ショートカット|
|----|----|
|縦分割 / 横分割 |ctrl+shift+D / ctrl+shift+E|
|タブ生成       | ctrl+shift+T |
|タブ移動右 / 左|ctrl+shift+→ / ctrl+shift+←|
|アクティブな枠を閉じる|ctrl+shift+W|
|枠の移動 (hyper-paneの拡張機能)|ctrl+alt+(→ / ↑ / ← / ↓)|








## 4.Midnight Commander : https://midnight-commander.org
TUI(Text-based User Interface)のファイルマネージャです。
UIはこんな感じです。
![スクリーンショット (7).png](https://qiita-image-store.s3.amazonaws.com/0/275289/f8837323-3fa5-3490-aea0-7c6d10a77698.png)
正直、あまり本気で使う気はなくて、ちょっとファイルが見やすいシェルぐらいの感じで使おうかなって感じで入れました。


### インストール手順
#### Windows
1. PowerShellを管理者権限で起動
2. PowerShellに`choco install mc`と入力
3. 適宜環境変数を追加してください
4. `mc`で起動できます


#### Linux / MacOS
以下URLを参照
https://midnight-commander.org/wiki/Binaries
Linuxだと大抵のパッケージマネージャに入ってるはず。
`apt install mc`とか`pacman -S mc`でインストールできます。

### セッティング
デフォルトだと、左右二面にファイルのリストが表示されるのですが、私は右面にファイルのクイックビューが表示されるようにしています。起動後`F9`を押すことで上に表示されているバーにアクセスできます。その後、矢印キーと`Enter`キーで`Right`->`Quick view`を選択するとクイックビューにできます。最後に`Option`->`Save setup`を選択すれば、次回の起動時に設定が復元されます。

### 簡単な操作方法
|操作|コマンド|
|----|----|
|上のバーにアクセス |F9|
|選択の移動       |矢印キー|
|選択|Enterキー|
|リネーム/移動|F6|
|ディレクトリ作成|F7|
|削除|F8|
|検索|Meta(alt)+?|
|ディレクトリお気に入りリスト|Ctrl+\|

下のコマンド欄を用いて、好きな操作をすることができます。例えば、`vim file.txt`と入力すればvimで編集することができます。

Debianのサイトが詳しいです↓
https://www.debian.org/doc/manuals/debian-reference/ch01.ja.html#_midnight_commander_mc


## 5.Neovim : https://neovim.io
Vimは言うまでもなく世界で最も使われているテキストエディタの一つです。
その次世代版がNeovimです。どうせなら新しいの入れておこうということでNeovimを採用しました。Neovimは`:terminal`でターミナルを呼び出すことができます。
Neovim内で`Midnight Commander`を呼び出すとこんな感じです↓
![スクリーンショット (8).png](https://qiita-image-store.s3.amazonaws.com/0/275289/f7b2d4d9-4674-0fd6-f4ed-2f0ad2eaa1cf.png)
### インストール手順
#### Windows
1. PowerShellを管理者権限で起動
2. PowerShellに`choco install neovim`と入力
3. 適宜環境変数を追加してください
4. `nvim`で起動できます

#### Linux / MacOS
Linuxだと`apt install neovim`とか`pacman -S neovim`でインストールできます。
Macはbrewから入れることができるらしいです。多分こんな感じ`brew install neovim`

#### 使い方
流石に書ききれないので省略します。


# まとめ
なんとか良さそうなCLI開発環境を構築することができました。
Neovimをセッティングしはじめるとまだまだ時間がかかるんだろうけど・・・
ともかく、これでやべー奴扱いされずにすみそうです。