魂の生命の領域

AWS とか Python とか本読んだ感想とか哲学とか書きます

VS Code のターミナルを Cmder にした

私は VS Code が大好きで毎日 VS Code を抱いて寝てるぐらいの人間なのですが、 Windows で使うにあたってターミナルをどうするかという問題がありました。

先述の通り私は VS Code は大好きなのですが、それ以外で言うと Microsoft スタイルがとても苦手というか Linux についてさえポンコツなので覚える気がしません。 なのでコマンドプロンプトPowerShell をそれぞれ 5 回ずつぐらいしか使ったことがありません。

なのでターミナルを Linux というか UNIX like なものにしたかったのです。

今までは git for windows の git bash を使っていたのですが、やはり無理があるようでして、特に path の表記を \ から UNIX like な / に自動でパースしている都合からか謎の挙動がちょくちょく起きたりしていました。

ということで Cmder を導入しました。設定が楽(魔改造しなくていい)という話を聞いたからです。

Cygwin は色々カスタマイズできるらしいですが、最初が結構面倒だそうです。あと PC 乗り換えたときとか。

Cmder 自体は天才チンパンジー程度なら楽々インストールして使い始められるのですが、 VS Code のターミナルとして設定するにあたって若干工夫しないといけない箇所があったのでメモとして残しておきます。

インストールする

cmder.net

  • こちらの公式サイトで Download Full をクリックしてダウンロードします。
    • ただこれだと git for windows が元から入ってるとダブっちゃうのでベストではないかもしれないです。
  • 適当なディレクトリに展開します。C ドライブ直下でいいと思います。
  • これで cmder/Cmder.exe を実行すればもう既にターミナル単体としては使い始めることができます。やったね。

VS Code のターミナルに設定する

  • 公式に普通に書いてあるあるのですが、Ctrl + ,settings.json を開いて以下の内容を記述します。
    "terminal.integrated.shell.windows": "cmd.exe",
    "terminal.integrated.env.windows": {
        "CMDER_ROOT": "C:\\cmder"
    },
    "terminal.integrated.shellArgs.windows": [
        "/k",
        "%CMDER_ROOT%\\vendor\\bin\\vscode_init.cmd"
    ],

"CMDER_ROOT": "C:\\cmder" は C 直下に展開したこと前提です(どこでもいいはず)。 github.com

これで Ctrl + @ をしたら(ターミナルを開くショートカットです)ターミナルとして Cmder が起動してくれます。

プロンプトを変更する

んで、起動して使ってみると違和感があります。

カーソルの位置がおかしいのです。 これは VS Code のターミナルとしてではなく普通に開くとそんなことはないのですが、カーソルの位置がずれて Back Space で消せない位置に文字がいっちゃうのでとても不便です。

どうやら、デフォルトのプロンプトがマルチバイト文字の λ であることが原因のようです。

なのでソースコードに手を入れます。ベストな方法なのかは知りませんが。

cmder/vendor/clink.lua の 51 行目ぐらいにこんな記述があります。

local lambda = "λ"

たぶんこれが原因なので λ$ とかに書き換えちゃいましょう。root ユーザー気分を味わいたいときは # でもいいかもしれません。

このファイルを上書き保存して Cmder を再起動するとプロンプトがちゃんと $ に書き換わっています。

変数名が lambda のままなのは気持ち悪いですが我慢します。

人生で初めて Lua のコードをいじったのでなんか嬉しい気分です。