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
并确保生成的标签的文件名将 $
转义为 $
。
它可以满足我的需要。我会暂时打开它,以防万一有人有更好的解决方案。
当我在包含 $
的文件名中有一个 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
并确保生成的标签的文件名将 $
转义为 $
。
它可以满足我的需要。我会暂时打开它,以防万一有人有更好的解决方案。