😎

Cursorエディタを入れ際にVSコードの「code .」が使えなくならないような対処法

に公開

当記事で実現したいこと

Cursorエディタをインストール後、PCを再起動すると
cursor .
で、Cursorエディタが起動できるようになる。

それは、OKなのだが、
code .
で、VSコードが起動できなくなる
code .
でも、
Cursorエディタが起動してしまう

そうじゃなくて、
★★★★★★★★★★★★★★★★★★★★★
「cursor .」はCursorエディタ起動
「code .」はVSコード起動
を両立させたいので、そうなるようにしたい。

★★★
それを、「 WSL2 」と、「 Git Bash 」と、「 PowerShell 」の3つについて、
そうしたい。そのやり方は、当記事をみれば、さっさと解決できる
★★★

★★★★★★★★★★★★★★★★★★★★★
それを実現したい

経緯

Curosrエディタを入れるとVSコードの「code .」が効かなくなるトラブルがある

https://zenn.dev/torohash/scraps/42b16540421bee

の記事参照

Curosrエディタをインストールする前に、現時点のVSコードを指しているcodeコマンドのありかを、まず、メモっておこう。

「 WSL2 」と、「 Git Bash 」と、「 PowerShell 」の3つについて、
VSコードのcodeコマンドのありかのパスをメモっておく
別に、3つメモらなくても、どれか1個あれば、他は
なんとかなるけど
3つとも微妙にパスの表記が異なるため、メンドイと思うので
メモっておいたら、あとで、codeコマンドがVSコードに向くように
設定する時に楽である。

1つ目)
WSL2のターミナル上でVSコードのcodeコマンドのパスを取得しメモっておこう

$ which code
/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin/code

2つ目)
Git Bashのターミナル上でVSコードのcodeコマンドのパスを取得しメモっておこう

$ which code
/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin/code

3つ目)
PowerShellでVSコードのcodeコマンドのパスを取得しメモっておこう

下記で複数個所に、
C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd
が表示される
このパスをメモっておく

> gcm code | fl


Name            : code.cmd
CommandType     : Application
Definition      : C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd
Extension       : .cmd
Path            : C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd
FileVersionInfo : File:             C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd
                  InternalName:
                  OriginalFilename:
                  FileVersion:
                  FileDescription:
                  Product:
                  ProductVersion:
                  Debug:            False
                  Patched:          False
                  PreRelease:       False
                  PrivateBuild:     False
                  SpecialBuild:     False
                  Language:

★★ おそらく、「myUser」のところを自分の文字列に変更した感じになってると思う ★★

Cursorエディタをインストールする

https://www.cursor.com/ja

Windows版のCursorでよい。(WSL2でも使えるから)

2023年8月22日以降の「Cursor 0.8.4」以降のバージョンでは、
Cursorエディタは、Windows版をインストールしても、
Ubuntu(WSL2)で「cursor .」をした場合は、直接、ext4のファイルシステムを見て動作してくれる

Windows版のVSコードの場合は、Remote WSL2の拡張プラグラインがあれば、
WSL2で「code .」で起動時、ext4のファイルを直で見るように動作する

Windows版のCursorエディタは、プラグインなしでも、
WSL2で「cursor .」で起動時、ext4のファイルを直で見るように動作する

( Cursorエディタでは、Remote WSL2は機能しないが、そもそも、要らない。 )

したがって、WSL2用にLinux版のCursorエディタをインストールする必要性はない。

また、別の理由でも、Linux版のCursorエディタは必要ない。
WSL2の描画システムと、Linux版のCursorエディタで必要な描画システムの相性がよくなく
Linux版のCursorエディタはやめたほうがよい。

WSL2で起動時、ext4のファイルシステムを直接見るのだから
Windows版のCursorエディタのインストールでよい。

Cursorエディタをインストール後、PCを再起動すると

Ubuntu(WSL2)や、Git Bashのターミナルより
cursor .
で、Cursorエディタが起動できるようになる。

それは、OKなのだが、

code .
で、VSコードが起動できなくなる
code .
でも、
Cursorエディタが起動してしまう

codeがcursorの内部で作られた他のものが、他に作られて、
それが環境変数PATHでより優先的に値設定がされるのが原因のようである。

code .
では、VSコードを起動したいので、そのように戻したい

つまり、

★★★★★★★★★★★★★★★★★★★★★
「cursor .」はCursorエディタ起動
「code .」はVSコード起動
を両立させたいので、そうなるようにしたい。
★★★★★★★★★★★★★★★★★★★★★

そのために、まずは、
Cursorエディタをインストール後、PCを再起動した後の状況で、
cursorコマンドのありかを取得し、メモっておく

1つ目)
WSL2のターミナル上でVSコードのcursorコマンドのパスを取得しメモっておこう

$ which cursor
/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin/cursor

2つ目)
Git Bashのターミナル上でVSコードのcursorコマンドのパスを取得しメモっておこう

$ which cursor
/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin/cursor

3つ目)
PowerShellでVSコードのcodeコマンドのパスを取得しメモっておこう
下記で複数回表示される
c:\Users\myUser\AppData\Local\Programs\cursor\resources\app\bin\cursor.cmd
のパスをメモっておく

> gcm cursor | fl


Name            : cursor.cmd
CommandType     : Application
Definition      : c:\Users\myUser\AppData\Local\Programs\cursor\resources\app\bin\cursor.cmd
Extension       : .cmd
Path            : c:\Users\myUser\AppData\Local\Programs\cursor\resources\app\bin\cursor.cmd
FileVersionInfo : File:             c:\Users\myUser\AppData\Local\Programs\cursor\resources\app\bin\cursor.cmd
                  InternalName:
                  OriginalFilename:
                  FileVersion:
                  FileDescription:
                  Product:
                  ProductVersion:
                  Debug:            False
                  Patched:          False
                  PreRelease:       False
                  PrivateBuild:     False
                  SpecialBuild:     False
                  Language:

★★ おそらく、「myUser」のところを自分の文字列に変更した感じになってると思う ★★

WSL2環境での「code .」を元のVSコード起動に復元する。

Cursorエディタをインストール前に取得した
VSコードのcodeコマンドのありか
WSL2のパス
/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin/code

および、

Cursorエディタをインストール後に取得した
Cursorエディタのcursorコマンドのありか
WSL2のパス
/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin/cursor

上記について、

/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin/code

/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin
の部分

また、

/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin/cursor

/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin
の部分

それらを用いた下記のコードを
~/.profile
などのログインプロセスのシェルの末尾に下記のコードを追加する

# Remove VS Code and cursor from PATH if they exist
PATH=$(echo "$PATH" | sed -e 's|:/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin||g')
PATH=$(echo "$PATH" | sed -e 's|:/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin||g')

# Add VS Code to PATH
PATH="$PATH:/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin"

# Add cursor after VS Code
PATH="$PATH:/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin"

export PATH

上記のコードは、PATHの中での優先順位を変更している
/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin
/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin
の優先順位になってしまっているのを
これらを、一旦、PATH変数から削除して
再度、
/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin
/mnt/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin
の順番で追加しなおす
こうすることで、「code .」を打ち込んだ時に
/mnt/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin
にあるVSコードの「code .」を見てくれるようにする
ためのコードである。

source ~/.profile
もしくは、
WSL2を一回、exitして再度、起動しログインしなおしで

cursor .
で、cursorエディタ起動

code .
で、VSコード起動

の両方ができるようになることを確認する

また、
which code
で、Cursorエディタインストール前に取得したのと同じパスが表示されるのも
あわせて確認しておく

「Git bash」での「code .」を元のVSコード起動に復元する。

その1)
Cursorエディタをインストール前に取得した
VSコードのcodeコマンドのありか
Git bashのパス
/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin/code

その2)
Cursorエディタをインストール後に取得した
Cursorエディタのcursorコマンドのありか
Git bashのパス
/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin/cursor

上記の
/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin/code

/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin
の部分

および、

/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin/cursor

/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin
の部分

を利用した下記のコードを
~/.bash_profile
に追記する
( ~/.bash_profile がなければ、新たに作る )

# Remove VS Code and cursor from PATH if they exist
PATH=$(echo "$PATH" | sed -e 's|:/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin||g')
PATH=$(echo "$PATH" | sed -e 's|:/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin||g')

# Add VS Code to PATH
PATH="$PATH:/c/Users/myUser/AppData/Local/Programs/Microsoft VS Code/bin"

# Add cursor after VS Code
PATH="$PATH:/c/Users/myUser/AppData/Local/Programs/cursor/resources/app/bin"

export PATH

source ~/.bash_profile
または、
Git Bashの窓を閉じて、開きなおしをした後に、

Git Bash環境にて

cursor .
で、Cursorエディタが起動する。

code .
で、VSコードが起動する。

また、

which code
で、Cursorエディタをインストール前のパスが表示されるかも確認する。

「PowerShell」での「code .」を元のVSコード起動に復元する。

まず、
powershellのターミナルを起動後、

echo $PROFILE
をすると、
C:\Users\myUser\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

などのパスが表示される

このパスのファイルがあれば、

powershellのターミナルを起動時に実行される

notepad $PROFILE
を打ち込むと、

上記のファイルが開く、もし、未だ、なければ
作成するか、聞かれるので、「はい」を押す

上記のファイルについて、メモ帳が開く

そこに、

Cursorエディタをインストール前に取得した
VSコードのcodeコマンドのありか
Windowsのパス
C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd

を利用した下記のコードを追記し保存する。

Remove-Item alias:code -ErrorAction SilentlyContinue

function code {
  & ("C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd") @args
}

codeという名前で関数定義をしている

powershellのターミナルを起動時、この関数が定義される。

code .
で、VSコードが開くようになる。

ただし、
powershellのターミナルを起動時、上記、コードが実行された結果
エラーがターミナルに表示されることがある。

*.ps1のスクリプト実行の権限がないときである。

そのときは、

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

を打ち込む。
CurrentUserのScopeに対するExecutionPolicyの変更は、
管理者権限がなくても、実行できる
結果は、レジストリに書き込まれ、次回以降有効になってる

他にも、やり方はあるようだが、どうやら
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
の方法が、セキュリティリスクを低く抑えて、
*.ps1を起動できるようにするやり方のようだ。

powershellのターミナルを閉じて、再度、開きなおすと
今度は、エラーがでないと思うです

cursor .
で、cursorエディタ起動

code .
で、VSコード起動

の両方ができるようになることを確認する

また、
gcm code | fl
で、Cursorエディタインストール前に取得したのと同じパスが表示されるのも
あわせて確認しておく

実際には、下記のようになると思います。

> gcm code | fl


Name        : code
CommandType : Function
Definition  :
                & ("C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd") @args

Discussion