標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

(解決編) jujutsu v0.15.1 で、コミットログを gvim.exe で編集できなくなってしまった

(前回) → 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:\... 形式へ変換されると共に、シンボリックリンクも展開されている。なるほどなぁ