LoginSignup
0
1

More than 5 years have passed since last update.

Visual Studio Codeのプロジェクトを直接開く

Posted at

動機

Project Managerでプロジェクトの管理をしているが、Visual Studio Code自体を起動する時、ついでにプロジェクトを開くことができない。

起動してからプロジェクトを開くのがめんどいので、直接開いて欲しい。

プロジェクトデータの実態

C:\Users\<ユーザー名>\AppData\Roaming\Code\User\projects.jsonに格納されている。

実装例

アクセス方法

fenrirで検索できるよう、各プロジェクトをひとつのフォルダにまとめる。

Windowsショートカットとかシンボリックリンクでもいいのだが、今回はEnterだけでVisual Studio Codeを起動できるよう、「Visual Studio Codeで指定フォルダを開く」ショートカットとする。

jq

jsonファイルの処理にはjqを使う。

コマンドプロンプトでプロジェクトパスの一覧を作成

マルチルートプロジェクトが混じってると面倒だが、とりあえずそれは考えないで、1プロジェクト1ルートだとしてパスの一覧を作成する。

jqはutf-8で書かれているので、chcpでコードページをutf-8に変更しないと動作しない……とのこと。

cd %USERPROFILE%/AppData/Roaming/Code/User
chcp 65001
cat projects.json | jq -r ".[].rootPath" > projects.txt

これで、各プロジェクトのルートパスが記述されたテキストファイルができる。

AutoHotKeyでショートカットを作成

一覧作成も併せて行う。

ProjectManager.ahk
; コマンドプロンプトを、カレントディレクトリが%USERPROFILE%/AppData/Roaming/Code/User、非表示で実行
Run, cmd /c chcp 65001 && cat projects.json | jq -r ".[].rootPath" > projects.txt, %USERPROFILE%/AppData/Roaming/Code/User, Hide

DestDir = %USERPROFILE%\Projects ; ショートカットを置くディレクトリを指定
editor = C:\Program Files\Microsoft VS Code\Code.exe

If not FileExist(DestDir) ; ディレクトリが存在しなければ作成する
    FileCreateDir, %DestDir%
Loop, Read, projects.txt ; プロジェクト一覧からショートカットを作成する
{
    SplitPath, A_LoopReadLine, OutFileName, OutDir
    FileCreateShortcut, %editor%, %DestDir%\%OutFileName%.lnk, %OutDir%, %A_LoopReadLine%, , ,
    ; [note]
    ; すでに存在する場合は上書きされる
}

AutoHotKeyで自動実行

上記を自動的に実行するようにする。

Routine.ahk
SetTimer, OnTimer, 300000 ; ミリ秒/5分ごとにタイマーサブルーチンを実行
Return

OnTimer:
    ; 20分 以上操作を行っていなければ
    If ( A_TimeIdlePhysical > 1200000 )
    {
        Run, ProjectManager.ahk ; この場合A_WorkingDirからの相対パス
    }
    Return

これでプロジェクトごとのショートカットが作成される。

問題

ところが、なぜかショートカット作成時にVisual Studio CodeのパスがC:\Program Files\Microsoft VS Code\Code.exeではなくC:\Program Files (x86)\Microsoft VS Code\Code.exeと誤って登録されてしまう。

試しに、単純にRunしてみても起動しない。どうもAutoHotKeyの一部コマンドでC:\Program Filesを含むパスが勝手にC:\Program Files (x86)に変換されているような感じ。

色々試したが解決しなかったので、暫定的にC:\Program Files\Microsoft VS CodeからC:\Program Files (x86)\Microsoft VS Codeへシンボリックリンクしておくことにした。

mklink /d "C:\Program Files (x86)\Microsoft VS Code" "C:\Program Files\Microsoft VS Code"

気味は悪いが、いちおう動作するようになった。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1