2013-05-07 18 views
2

我使用vim和tagbar写我的乳胶文件。 在乳胶源,图形看起来像这样输入:与tagbar使用正则表达式VIM得到图形的文件名中的乳胶

\includegraphics[width=0.70\textwidth]{../../figures/mechanical_diffusion/plate_hole/plate_hole_fem_elas_cd_map} 

我想在tagbar只得到文件名,在这种情况下,“plate_hole_fem_elas_cd_map”。 我创建了一个.ctags在我家,它具有以下行(从tagbar文档中找到原线修改):

--regex-latex=/^[\t]*\\includegraphics[[:space:]]*(\[[^]]*\])?[[:space:]]*(\[[^]]*\])?[[:space:]]*\{[\.{2}\/]*[[a-zA-Z0-9_]+\/]*([^}]+)\}/\3/g,graphic+listing/ 

但我不能只获取文件名。我试过其他的东西,但有时我只删除“../”,有时我只能得到“plate_hole”.. 我做错了什么?

谢谢

回答

1

您的正则表达式不正确,您不能使用像那样的字符类。这一个为我工作:

--regex-latex=/^[\t]*\\includegraphics[[:space:]]*(\[[^]]*\])?[[:space:]]*(\[[^]]*\])?[[:space:]]*\{([^}]+\/)?([^}\/]+)\}/\4/g,graphic+listing/ 
+0

它也适用于我,谢谢。请你解释这部分? \ {([^}] + \ /)?([^} \ /] +)\} \ \ 4 – Napseis 2013-05-27 13:26:27

+0

第一组寻找尽可能多的字符, '最后,第二组寻找尽可能多的角色,既不是大括号也不是斜杠。这样所有的斜杠(即目录)将会在第一组中结束,并且由于该组是可选的,它也可以用于当前目录中的文件。 – 2013-05-28 07:50:17

+0

非常感谢! – Napseis 2013-05-28 11:36:23