2026-02-07

VSCodeのターミナルの設定

数日前からGeminiCLIと連携するターミナルをiTerm2からVSCodeに変更した。

それまでは、Obsidian、CotEditor、iTerm2とGeminiCLIという組み合わせだったのだが、CotEditorもiTerm2も捨てがたいが、統合環境としてのVSCodeを挟むとより統合的にObsidianにたくわえたデータの利活用のためのGeminiCLIが機能できるということだった。

ところが、ターミナルに絵文字のような文字化けが大量に出現する現象が起きた。ドラッグしてコピペしてエディターなどに引っ越すと文字化けの問題なく表示されるのだが、ターミナルの画面が乱れて、とんでもなく煩わしくなり、実用的ではないことが理解できた。

結果として、VSCodeではなくiTerm2に復帰することもあり得たが、サーバ管理をしないレベルではなく、ローカルなコーディングにとどまる仕様法からすると、VSCodeで処理を継続する合理性があった。

ところが、Geminiのアドバイスをみても、決定的な原因があって一発解消はありえそうにない事がわかった。やりかとして、いくつかの問題点を「叩いて潰す」しかないと考えられた。

  1. まずはフォント問題: 
    1. フォントの確認: VSCodeの設定 terminal.integrated.fontFamilyに、日本語を正しくサポートするフォント(例:Menlo, Monaco, Courier New, monospace に加え、Hiragino Sans 等)が指定されているか確認する。:これは、そのように設定されていた。
    2. フォントの指定:terminal.integrated.fontFamilyに、日本語の等幅性が保証されているフォント(例:Menlo, Monaco, Courier New, Hiragino Sans GB, monospace)を明示的に指定する。:これは、そのように設定されていた。
    3. Unicode対応:terminal.integrated.unicodeVersionを 11 に設定する(古いバージョンだと絵文字や特殊文字で幅がズレるため)。:これは、そのように設定されていた
    4. エンコーディングの強制:設定 files.encodingが utf8 であることを確認し、ターミナル自体のロケールを export LANG=ja_JP.UTF-8で再読み込みする。
      1. ~/.zshrcを編集して、ファイルの末尾に export LANG=ja_JP.UTF-8 を追記する。
  2. 次にVSCodeのターミナル設定の問題:
    1. VSCodeの settings.json において、以下の設定を行うことで、外部ターミナルとして iTerm2 を呼び出すことが可能になる。
    2. "terminal.external.osxExec": "iTerm.app"`
    3. これにより、VSCodeから `Shift+Cmd+C` でターミナルを立ち上げる際に、標準の `Terminal.app` ではなく `iTerm.app` が起動するようになる。
  3. VSCodeのレンダリングエンジンの変更:
    1. アクセラレーションのオフ:
      • terminal.integrated.gpuAcceleration` を `off` に設定する。
    2. GPUによる高速描画をオフにし、CanvasまたはDOMベースの描画に切り替えることで、フォント幅の計算ミスを抑制できる場合がある。


以上の変更によって、とりあえずは、VSCodeのターミナルにおける文字化け問題は解決できたと思うのだが・・・。

No comments: