代码之家  ›  专栏  ›  技术社区  ›  user3591723

文件名包含$

  •  2
  • user3591723  · 技术社区  · 6 年前

    当我在包含 $ 例如 foo/bar/File$With$Dollars.ext vim不会打开该文件,而是尝试打开 foo/bar/Baz.ext 是的。我尝试使输出标记文件名转义为 $ 具有 \$ -就像你打开文件时用 :e foo/bar/File\$With\$Dollars.ext -但那也没用。

    具体来说,假设我有以下标签:

    fooFunction     foo/bar/File$With$Dollars.ext   23;"    f
    

    我怎么能让维姆明白 $ 当ctags标记文件提供该文件名时,该文件名是否是该文件名的一部分?

    1 回复  |  直到 6 年前
        1
  •  1
  •   user3591723    6 年前

    我对Vimscript不是特别在行,但我最终做到了:

    function SmaliFileFixTagFileName()
        let fname = expand("<afile>")
        let delbuf = 0
        if (stridx(fname, "$") != -1 )
            if (stridx(fname, "\\$") == -1)
                let fname = escape(fname, "$")
            else
                let delbuf = 1
            endif
        endif
        exe "silent doau BufReadPre " . fname | exe "edit " . fname | exe "silent doau BufReadPost " . fname
        if (delbuf == 1)
            exe "bd " . escape(escape(fname, "\\"), "$")
        endif
    endfunction
    
    augroup tagfix
        au!
        au BufReadCmd *.smali call SmaliFileFixTagFileName()
    augroup end
    

    并确保用转义为 $ 作为 \$ 是的。

    它能满足我的需要。我暂时不谈这个,以防有人有更好的解决办法。