带有$的文件名的Vim标签

时间:2018-07-05 22:15:58

标签: vim ctags

当我的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理解?

1 个答案:

答案 0 :(得分:1)

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

并确保标记是使用文件名将$转义为\$来生成的。

它可以满足我的需求。我会稍微开放一下,以防万一有人有更好的解决方案。