Vim 个文件名包含 $ 的标签

Vim tags with filenames containing a $

当我在包含 $ 的文件名中有一个 ctags 条目时,例如 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 标签文件提供时,如何让 vim 理解 $ 是文件名的一部分?

我对 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

并确保生成的标签的文件名将 $ 转义为 $

它可以满足我的需要。我会暂时打开它,以防万一有人有更好的解决方案。