Теги Vim с именами файлов, содержащими $
Когда у меня есть запись ctags, которая находится в имени файла, содержащем $
, например foo/bar/File$With$Dollars.ext
vim не откроет этот файл, а вместо этого попытается открыть foo/bar/Baz.ext
. Я попытался сделать так, чтобы выходной тег filename экранировал $
с помощью $
- Как вы сделали бы, открыв этот файл с помощью :e foo/bar/File$With$Dollars.ext
- но это тоже не сработало.
Конкретно, скажем, у меня есть следующий тег:
fooFunction foo/bar/File$With$Dollars.ext 23;" f
Как я могу заставить vim понять, что $
является частью имени файла, когда это имя файла предоставляется тегами ctags файл?
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
И обеспечение того, чтобы теги были сгенерированы с именами файлов, экранирующими
Это работает для того, что мне нужно. Я оставлю это открытым на некоторое время, на случай, если у кого-то есть лучшее решение.$
как\$
.