しばたテックブログ

気分で書いている技術ブログです。

Visual Studio CodeのターミナルをPowerShellに変える際に注意すべきこと

【2017/10/13追記】

Visual Studio Codeのバージョンも新しくなり、本エントリの注意点もあまり役に立たなくなってしまいました。

せっかくなのでVisual Studio Code PowerShell拡張の設定に関する以下のエントリのリンクを張っておきます。
Visual Studio Code上でPowerShellの挙動が変わった・おかしいと感じた時は下記エントリの設定を確認してみるのも良いかと思います。

blog.shibata.tech

blog.shibata.tech

【追記ここまで】


Visual Studio Codeのバージョン1.2.0からターミナル機能が搭載され、早速このターミナルをPowerShellに変える方法が紹介されています。

https://blogs.msdn.microsoft.com/ayatokura/2016/06/10/vscode_terminal_powershell/blogs.msdn.microsoft.com

pglib.hateblo.jp

本エントリではターミナルをPowerShellに変える際に注意すべきことについて記載します。

1. powershell.exeのアーキテクチャ

Windows版のVisual Studio Codeは32bitアプリケーションです。


【2017/07/21追記】

Visual Studio Code Ver.1.14.1からWindowsにおいても64bit版が提供されました。
以下の内容は32bit版のVisual Studio Codeに関するものとなります。

【追記ここまで】


64bitOSで上記エントリの手順を単純に設定して、

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" 

とすると、起動されるpowershell.exeは32bit版となります。

これはWOW64のシステムフォルダに対するリダイレクション機能によりC:\Windows\System32フォルダへのアクセスがC:\Windows\SysWOW64にリダイレクトされるためです。
リダイレクションの詳細についてはこちらを参考にしてください。

例としてターミナルを起動してみると、以下の図の様に$PSHOMEはWOW64配下になりIntPtrのサイズは4Byteとなっています。

f:id:stknohg:20160610175247p:plain

このため64bitOS上で64bit版のpowershell.exeを起動したい場合は、

"terminal.integrated.shell.windows": "C:\\Windows\\Sysnative\\WindowsPowerShell\\v1.0\\powershell.exe" 

と、C:\Windows\Sysnativeフォルダを指定する必要があります。
こうすることで32bitアプリから64bit版のpowershell.exeを起動することができます。

f:id:stknohg:20160610175344p:plain

2. 日本語表示の問題

【2016/07/08追記】 この問題はバージョン1.3.0で解決されました。


現時点でのターミナルでは日本語の表示に難がある様でターミナルのウィンドウサイズによって文字が潰れて表示されてしまう場合があります。

綺麗な表示の場合

f:id:stknohg:20160610175644p:plain

潰れた表示の場合

f:id:stknohg:20160610175656p:plain

こちらについては、

github.com

でCJKまとめた形で対応中の様です。
Issue自体はクローズに向かっているので次のリリースでは直っているんじゃないかと思います。

3. 日本語入力の問題

【2016/08/05追記】 この問題はバージョン1.4.0で解決されました。

1.4.0ではこの他にターミナル上でのコピペがサポートされる様になりました。
コピーしたい範囲を選択して、Ctrl+Shift+Cでコピー、Ctrl+Shift+Vでペーストできます。
右クリックでメニューも出ます。


最初にこのエントリを書いた当時は気がつかなかったのですが、現時点ではターミナル上でIMEが有効にならない問題があります。

github.com

こちらはバージョン1.4.0で修正予定だそうです。

最後に

とりあえずこんな感じです。
他にも何かあれば追記していきます。