Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Dock から起動する Visual Studio Code について (OS X El Capitan)

More than 3 years have passed since last update.

知りませんでした。

ごめんなさい、ちゃんと ~/.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 or code-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>

参考

satokaz
コリドラスがスキ
oracle
Oracle Cloudは、最先端の機能をSoftware as a Service、Platform as a ServiceおよびInfrastructure as a ServiceおよびData as a Serviceとして提供します。
https://cloud.oracle.com/ja_JP/home
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away