当我的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理解?
答案 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
并确保标记是使用文件名将$
转义为\$
来生成的。
它可以满足我的需求。我会稍微开放一下,以防万一有人有更好的解决方案。