WinでVim! 今までできないことはなかったんですが、まぁ環境構築が面倒かったり完璧に動作しなかったりで使いにくかったんですがやっとその問題も解放された!? なんと! Win10 の標準機能で Ubuntu が使えるようになってたんですね。
LinuxカーネルとWindowsカーネルコンポーネントの間でうまく連携してくれているとか。いや ありがたい。結構前から話題になってたみたいですけど、職場では Win7 使っていたので全然気づきませんでした。ということで検証備忘録です。
Windows Subsystem for Linux を有効に
Windwos10 Home バージョン1607 を使っています。Windows Subsystem for Linux は現時点ではまだベータ版なので標準設定では使えません。使えるように設定します。
まずは、コントロールパネルを開きます。コントロールパネルの開き方はいくつかありますが、今回は以下の方法で開きました。
- 「Windows」キー+「x」
- コントロールパネル をクリック
コントロールパネルで、プログラム をクリックします。
Windowsの機能の有効化または無効化 をクリックします。
Windows Subsystem for Linux (Beta) をチェックします。
再起動を促されるので、再起動します。
開発モード を有効に
まずは、Windowsの設定 を開きます。Windowsの設定 の開き方はいくつかありますが、今回は以下の方法で開きました。
- 「Windows」キー+「i」
更新とセキュリティ をクリックします。
開発者向け > 開発モード を選択します。
開発モードのパッケージインストールが開始され、「PCを再起動するまで、一部の機能は動作しない可能性があります。」のメッセージが表示されます。再起動します。
Ubuntu のインストール
コマンドプロンプトを開きます。そして以下のコマンドを叩きます。
bash
C:\Users\hoge>bash -- ベータ機能 -- これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、 次のサイトに示される条件に基づいてライセンスされています。 https://aka.ms/uowterms 続行するには、"y" を入力してください: y Windows ストアからダウンロードしています... 100% ファイル システムを展開しています。この処理には数分かかります... 既定の UNIX ユーザー アカウントを作成してください。ユーザー名は、Windows のユーザー名と一致する必要はありません。 詳細: https://aka.ms/wslusers を参照してください 新しい UNIX ユーザー名を入力してください: hoge Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully インストールが正常に終了しました 環境が間もなく開始されます... ドキュメントを参照できる場所: https://aka.ms/wsldocs hoge@DESKTOP-A1HMUG3:/mnt/c/Users/hoge$
まだ、Ubuntu がインストールされていない場合は、インストールが開始します。
Unixユーザ作成のため ユーザ名とパスワード の入力を促されるので、入力します。Windowsのユーザ名と一致する必要はありません。
インストールが自動で始まるのでしばらく待ちます。インストールが終了すると UbuntuモードになっているのでLinuxコマンド が使える状態になっています。
Ubuntu と コマンドプロンプトの切り替え
現在、Ubuntuモードだけどどうやってコマンドプロンプトに戻すのだろうと思って試しに次のコマンドを叩きました。
exit
hoge@DESKTOP-A1HMUG3:/mnt/c$ exit exit C:\Users\hoge>
ビンゴ!コマンドプロンプトに戻りました。再度「bash」と叩くと
bash
C:\Users\hoge>bash hoge@DESKTOP-A1HMUG3:/mnt/c/Users/hoge$
Ubuntuモードになりました。切り替えかんたん!
Windows と Ubuntu のマウント
さて、Ubuntu から Vim でWindwosのファイル触りたいけどパスはどこに?
C:\Users\hoge>bash hoge@DESKTOP-A1HMUG3:/$ cd /mnt/ hoge@DESKTOP-A1HMUG3:/mnt$ ls c hoge@DESKTOP-A1HMUG3:/mnt$
標準では、Ubuntu の「/mnt/c/」が Windows の「C:\」と対応しているようです。
hoge@DESKTOP-A1HMUG3:/mnt/c/demo$ pwd /mnt/c/demo hoge@DESKTOP-A1HMUG3:/mnt/c/demo$ ll total 8 drwxrwxrwx 2 root root 0 Jul 23 13:24 ./ drwxrwxrwx 2 root root 0 Jul 23 13:23 ../ drwxrwxrwx 2 root root 0 Jul 23 13:23 demo_dir/ -rwxrwxrwx 1 root root 7 Jul 23 13:24 demo.txt*
うん!完全一致!
Vim を使う
まず、WindowsのGUIツールでテキストを記入。
vim demo.txt
Vimは標準でインストールされているので、Ubuntuモードでそのまま操作できます。
ちゃんと日本語も化けずに表示されている。OK!
次にVimから「Ubuntuより記述」と入力します。
あれ?あれあれ? 日本語入力ができない・・・
Windows Subsystem for Linux で日本語可能に
どうやら、Windows Subsystem for Linux の デフォルトで提供されているコンソールでは日本語入力ができないらしい。
調べてみると、Xming + FEP など結構複雑なインストールや設定で日本語している記事も多いのですが、コンソールが対応していないならコンソール変えちゃえ!って方向性で対応してみました。
私は「ConEmu」というコンソールツールを使いました。日本語も、Win Bashも対応しています。
https://www.fosshub.com/ConEmu.html にアクセスして ConEmu をダウンロードします。
私は、「ConEmu Stable, Installer (32-bit, 64-bit) - 5.23 MB 」をダウンロードしました。
ダウンロードしたら、インストールします。すべてデフォルトで進めました。
ConEmu を起動します。デフォルトなら コマンドプロンプト 画面が表示されています。
このままだと日本語やカーソルの動作がおかしいので少し設定を変更します。右上のハンバーガメニューをクリックし、Sttings・・・をクリックします。
Monspaceのチェックを外します。これで日本語の重なりがなくなります。
Tasks > Predefined tasks : {Bash:bash} の Start Consoles **** に以下のコードを追加します。
%windir%\system32\bash.exe -cur_console:p
これで、十字キーが使えなかったのが使えるようになりました。Linuxの過去に入力したコマンドを[↑]キーや[↓]キーで再実行できると楽ですしね。
bash
bash コマンドを叩いて Ubuntuモードにします。
きちんと日本語入力できました。まだ少し日本語操作しずらいので Vim や ConEmu の微調整が必要ですが、少しづつやっていこうと思います。保存もちゃんとできました
まとめ
Windwos の標準で linuxコマンドが使えるようになるのは、非常に大きな機能拡張ではないかと思います。これで、GUIツールを使わずに Windows と 外部のLinuxサーバとのファイルのやり取りがコマンドだけ(Windowsの機能だけ)でできるようになります。
ベータ版なのでまだまだ発展途上ですが、非常に期待できる機能なのでこれからが楽しみです。