(前回) → jujutsu v0.15.1 で、コミットログを gvim.exe で編集できなくなってしまった。 - 標準愚痴出力
どうやら、\\?\C:\…
形式のパスに含まれるクエスチョンマークを、gvim がワイルドカードと誤認してしまったらしい。自前展開にトライした結果、失敗したようだ。
結論としては、gvim に --literal
オプションをつけて、ワイルドカード展開を抑制すればよい。環境変数EDITORやJJ_EDITORではなく、jj config edit --user
で以下の設定を追加した。
[ui] editor = [ "C:/Users/hymkor/scoop/apps/vim/current/gvim.exe" , "--literal" ]
しかし、なぜ \\?\C:\…
が使われるようになったのだろう。どうも、Rust のパスの正規化関数の仕様らしい。
use std::fs; fn main() -> std::io::Result<()> { let path = fs::canonicalize("C:/Users/hymkor/.vimrc")?; println!("{}",path.display()); Ok(()) }
$ rustc c.rs $ c \\?\C:\Users\hymkor\OneDrive\Share\Etc\.vimrc
\\?\C:\...
形式へ変換されると共に、シンボリックリンクも展開されている。なるほどなぁ