VS Code で統合端末起動時に tmux が実行されるのを防ぐ方法
こんにちは bokken (@bokken_)です。
VS Code を使う上で、コマンドをサクッと実行できる統合ターミナルはとても便利ですよね。
ただし、 ~/.zshrc などに tmux を初回起動するように設定していた場合、統合ターミナルは微妙に使いにくいものになります。 (具体的には、スクロールの挙動がおかしくなったり、コピペが上手くいかなかったりなどなど)
そもそも、 VS Code 自体も端末切り替えの機能が付いているので、必要ありません。
そこで、今回は VS Code 起動時に tmux を起動させない tips を紹介します。
対象読者
- tmuxをシェル起動時に実行するように設定している
- iterm2 などで作業をすることもあるので起動時に tmux を起動する設定は消したくない
背景
筆者が普段 iterm2 などのターミナルを使って作業をしているときは tmux を使用しています。
筆者は下記のように tmux をターミナル起動時に起動する設定をしているのですが、これだと VS Code の端末起動時にも tmux を起動してしまいます。
# tmux 起動中じゃなければ自動的に tmux を起動する if [[ ! -n $TMUX ]]; then tmux new-session fi
解決策
解決策は、下記のようにシェル変数 VSCODE_PID
が設定されているかどうかを条件に入れることです。
# tmux 起動中じゃなければ自動的に tmux を起動する if [[ ! -n $TMUX ]] && [[ $VSCODE_PID == "" ]] ; then tmux new-session fi
&& [[ $VSCODE_PID == "" ]]
が該当の箇所です。 VS Code は実行時にプロセスIDをシェル変数として登録するようで、これが登録されているかどうかで VS Code 起動時の処理を分岐できます。
このテクニックは tmux に限った話ではなく、VS Code とその他で起動時に処理を分岐したいときに使えるtips です。
よかったら使ってみてください。
おまけ
その他にも VS Code は下記のシェル変数を設定するようです。
VSCODE_NODE_CACHED_DATA_DIR_281=/Users/bokken/Library/Application Support/Code/CachedData/cb82febafda0c8c199b9201ad274e25d9a76874e VSCODE_NLS_CONFIG={"locale":"ja","availableLanguages":{"*":"ja"}} VSCODE_PID=281 VSCODE_IPC_HOOK=/Users/bokken/Library/Application Support/Code/1.14.2-main.sock
おわりに
いかがだったでしょうか。役に立つ情報があれば幸いです。
良かったら TypeScript や VS Code, AWS 関連のつぶやきをしているので @bokken_ をフォローしてみてください。
それではより良い VS Code ライフをお送りください!