知りませんでした。
ごめんなさい、ちゃんと ~/.bash_profile に export LANG=ja_JP.UTF-8 って書いておけば良いだけでした。何か壮大な勘違いをしていたみたい。*
恥ずかしいけど、勉強になたので記事はそのままで。
※ Visuasl Studio Code 限定のお話ではありません
Visual Studio Code 1.3 (stable or Insiders) でターミナルへのコピペができなくなっていたり、環境変数 LANG が引き継がれなくて日本語ファイル名が文字化けしたりで、実装中だからそういうものかなと思っていたのだけど、そうじゃなかった。
OS X で vscode を起動する場合は、2 つの方法がある
- OS X のターミナルから
code
orcode-insiders
で起動 - Dock からアイコンをポチっ
ようは、前者は ~/.bashrc に環境変数 LANGが設定されているので、この環境変数が有効になっているターミナルから起動された vscode は、環境変数を持って起動してくる。
なので、vscode のターミナルから環境変数を確認すると LANG が設定され、日本語のコピペが可能。
エディタ部分で選択された文字列を vscode のターミナルへ送信し実行させる Terminal: Run Selected Text Active Terminal
でも、日本語を選択して実行できる。
一方、Dock から起動された vscode は、~/.bashrc に設定された環境変数を全て引き継いで起動するわけではないっぽく、LANG などは設定されていないので、起動した vscode は locale が C
で起動する。一部の環境変数は設定されているので、LANG などは unset されるのかな?
そのため、vscode のターミナル内では日本語ファイル名などが文字化けするしコピペができない。と、判断してみた。
これが理由ってことだったらいいなぁ的なお話。
vscode のターミナルに IME から日本語入力できない件は、別問題。
一時的に設定する方法
OS X のターミナルで下記を実行してから、Dock から vscode を起動して vscode のターミナルで locale やコピペを確認してみる。(LANG=ja_JP.UTF-8 がセットされている)
Dock から vscode を起動して vscode のターミナルで locale やコピペを確認してみる。
$ launchctl setenv LANG ja_JP.UTF-8
確認方法:
$ launchctl getenv LANG
ja_JP.UTF-8
永続的に設定する方法
ログイン時から常に有効にするには、launchd を利用する方法。
~/Library/LaunchAgents/environment.plist
を作成し、再起動することで設定される。
$ vi ~/Library/LaunchAgents/environment.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>
launchctl setenv LANG ja_JP.UTF-8
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>