環境
OS
Windows 10
Java
11
jshell で外部エディタを使う
jshell には、外部エディタを使ってコードスニペットを編集できる機能が用意されている。
jshell> /edit
デフォルトでは、こんな感じの超シンプルなエディタが立ち上がる。1
ここでコードを編集して Exit
でエディタを閉じると、エディタにかかれていたコードがスニペットとして登録される。
スニペットが複数存在する場合は、 /edit <スニペットのID>
と指定すれば、指定したスニペットだけが編集できる。
(スニペットIDを指定してない場合は、全てのスニペットがエディタに表示される)
外部エディタに VS Code を指定する
/edit
で使用される外部エディタは、 /set editor <エディタを起動するためのコマンド>
という形で指定できる。
jshell> /set editor "F:\\ProgramFiles\\Microsoft VS Code\\Code.exe" -w
| エディタは次に設定されています: F:\ProgramFiles\Microsoft VS Code\Code.exe -w
VS Code を指定する場合は、 VS Code の exe へのパスと -w
オプションを設定する。
-w
は、ファイルを閉じるまで起動元に制御を戻さないようにするオプションで、これを付けておかないとうまく動作しない2。
バックスラッシュをエスケープするのも忘れずに。
これで /edit
でエディタを開くと、 VS Code が開くようになる。
ファイルを閉じれば、制御が jshell に戻る。
デフォルトの外部エディタを指定する
jshell の、デフォルトの外部エディタは次のいずれかの環境変数で指定できる。
JSHELLEDITOR
VISUAL
EDITOR
↑のほうが優先度が高く、先にエディタが設定されていた環境変数の情報が採用される。
つまり、環境変数 JSHELLEDITOR
に先程の /set editor
で指定したのと同じ情報を設定しておけば、毎回 /set editor
する必要はなくなる。
環境変数に設定した値
jshell から VS Code が起動される様子
参考
Java Platform, Standard Edition Java Shellユーザー・ガイド リリース9- Set Visual Studio Code as default editor in jshell