微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vim – 如何配置ctags以使用CSS,SCSS,HTML?

我已经在stackoverflow上阅读了很多博客文章和答案,但似乎我做错了,因为我还有E388:找不到定义错误.我做了什么:

>从这里下载ctags http://ctags.sourceforge.net/
>通过以下方式安装:./ configure&& make install
>在我的.vimrc文件中设置tags = tags; $HOME
>在〜/ .ctags中添加一些行(见下文)
>做ctags -R.在项目根目录中并获得一些警告(见下文)
>检查类别:标签.< C-D>这给了我一个很大的课程列表(很高兴)

警告:

ctags: Warning: regcomp ([A-Za-z0-9._$]+)[ t]*[:=][ t]*{: Unmatched \{
ctags: Warning: regcomp ([A-Za-z0-9._$()]+)[ t]*[:=][ t]*function[ t]*(: Unmatched ( or \(
ctags: Warning: regcomp ([A-Za-z0-9._$]+)[ t]*[:=][ t]*[: Invalid regular expression
ctags: Warning: cannot open source file "static/img/touch/packages" : No such file or directory

我的〜/ .ctags文件如下所示:

--exclude=*.min.js
--exclude=*.min.css
--exclude=*.map
--exclude=.backup
--exclude=.sass-cache
--exclude=vendors
--exclude=.git

--langdef=css
--langmap=css:.css
--langmap=css:+.sass
--langmap=css:+.styl
--langmap=css:+.less
--regex-css=/^[ \t]*\.([A-Za-z0-9_-]+)/.\1/c,class,classes/
--regex-css=/^[ \t]*#([A-Za-z0-9_-]+)/#\1/i,id,ids/
--regex-css=/^[ \t]*(([A-Za-z0-9_-]+[ \t\n,]+)+)\{/\1/t,tag,tags/
--regex-css=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/m,media,medias/

--langdef=scss
--langmap=scss:.scss
--regex-scss=/^[ \t]*@mixin ([A-Za-z0-9_-]+)/\1/m,mixin,mixins/
--regex-scss=/^[ \t]*\$([A-Za-z0-9_-]+)/\1/v,variable,variables/
--regex-scss=/^([A-Za-z0-9_-]*)*(\.[A-Za-z0-9_-]+) *[,{]/\2/c,classes/
--regex-scss=/^[ \t]+(\.[A-Za-z0-9_-]+) *[,{]/\1/c,classes/
--regex-scss=/^(.*)*\#([A-Za-z0-9_-]+) *[,{]/\2/i,ids/
--regex-scss=/^[ \t]*#([A-Za-z0-9_-]+)/\1/i,ids/
--regex-scss=/(^([A-Za-z0-9_-])*([A-Za-z0-9_-]+)) *[,|\{]/\1/t,tags/
--regex-scss=/(^([^\/\/])*)[ \t]+([A-Za-z0-9_-]+)) *[,|\{]/\3/t,tags/
--regex-scss=/(^(.*,*)([A-Za-z0-9_-]+)) *[,tags/
--regex-scss=/(^[ \t]+([A-Za-z0-9_-]+)) *[,tags/
--regex-scss=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/d,media/

--regex-html=/id="([A-Za-z0-9_-]+)"/\1/i,ids/
--regex-html=/class="([A-Za-z0-9_-]+)"/\1/c,classes/

--langdef=js
--langmap=js:.js
--regex-js=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*{/1/,object/
--regex-js=/([A-Za-z0-9._$()]+)[ t]*[:=][ t]*function[ t]*(/1/,function/
--regex-js=/function[ t]+([A-Za-z0-9._$]+)[ t]*(([^)]))/1/,function/
--regex-js=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*[/1/,array/
--regex-js=/([^= ]+)[ t]*=[ t]*[^"]'[^']*/1/,string/
--regex-js=/([^= ]+)[ t]*=[ t]*[^']"[^"]*/1/,string/

项目结构:

enter image description here

无论在哪里(static / index.html,static / css / main.scss或static / css / components / set.scss)我尝试使用] ^ D“跳转到定义”我总是得到E388:无法找到定义.怎么了?

UPDATE

c为C – ]>在_col-2名称的开头按下:

>如果< div class =“_ col-2”> ..给出E426:找不到标签:_col.看起来vim没有正确检测classname.
>如果是.class {@extend ._col-2;给出相同的.

作为建议@romainl,在将iskeyword = – in .vimrc中的set添加为dash是关键字的一部分后,按下< div class =“_ col-2”> ..会在行的开头抛出我.

解决方法

关于E426:找不到标签:txal-center …

你的.ctags中的这些行将索引.foo-bar – 带有前导的dot-in * .scss文件

--regex-scss=/^([A-Za-z0-9_-]*)*(\.[A-Za-z0-9_-]+) *[,classes/

当您按< C - ]>在HTML文档中的类名称上,Vim会查找确切的类名,比如foo-bar,但它找不到它,因为你的标签文件中只有.foo-bar.那是因为Vim认进行“全字”搜索.

这个特定问题的解决方案是将标记留在标记之外:

--regex-scss=/^([A-Za-z0-9_-]*)*\.([A-Za-z0-9_-]+) *[,classes/
--regex-scss=/^[ \t]+\.([A-Za-z0-9_-]+) *[,classes/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐