css - 如何让ctags + scss发挥出色

标签 css vim sass ctags

更新: 这个问题已被修改以反射(reflect)下面非常有用的评论和答案。我已接受答案,但完整功能迄今为止无法正常工作。

.ctags 的内容(在 ~/中)

-R
--exclude=.git
--exclude=log 
--verbose=yes
--langdef=scss
--langmap=scss:.scss
--regex-scss=/^[ \t]*([^\t {][^{]{1,100})(\t| )*\{/| \1/d,definition/
--regex-scss=/^[@]mixin ([^ (]+).*/\1/m,mixing/

当我将光标放在目标下时,vim 显示 E426 tag not find: tag_name

考虑以下模式:

footer{
 .wrapper{
  .general-info{
   .footer-links{
     a{@include ticker($bg, $white);}
    }
   }
  }
 }

在目录中的一个单独文件(modules.scss)中,我有代码的定义:

@mixin ticker($color, $bg-color) {
 color: $color;
 background-color: $bg-color;
}

当我将光标放在目标下时,vim 仍然显示 E426 tag not find: tag_name

ctags 不索引 ticker mixin。不过,我可以使用 ctags 直接从 SCSS gem 查找方法(例如变暗)。

最佳答案

在最后一个 { 之前添加 \ 使用 ctags 时不会发出警告。 我不知道生成的标签是否给出了所需的结果,因为我不懂该语言。

结果将是:

--langdef=scss
--langmap=scss:.scss
--regex-scss=/^[ \t]*([^\t {][^{]{1,100})(\t| )*\{/| \1/d,definition/

更新:就像我上面提到的,我不懂语言,所以很难检查标签的实际定义。 我在网上查了一下,以下代码在某些网页中被列为 scss 。 假设你要获取的标签是混合后的单词。

@mixin table-scaffolding {      
  th {                          
    text-align: center;         
    font-weight: bold;          
  }                             
  td, th { padding: 2px; }      
}                               

@mixin left($dist) {            
  float: left;                  
  margin-left: $dist;           
}                               

#data {                         
  @include left(10px);          
  @include table-scaffolding;   
}                               

然后使用以下内容:

--langdef=scss
--langmap=scss:.scss
--regex-scss=/^[ \t]*([^\t {][^{]{1,100})(\t| )*\{/| \1/d,definition/
--regex-scss=/^[@]mixin ([^ (]+).*/\1/m,mixin/
--regex-scss=/^[@]function ([^ (]+).*/\1/f,function/

您将获得两个新标签 lefttable-scaffolding。 因此,如果我在 data 内的单词 left 中,点击 ctrl+] 它会跳转到定义数据的行。 您必须小心另一个关键字,因为它的单词中有一个 - 。因此,如果您在 table 上并按 ctrl+],您将收到相同的错误标签未找到。为此,您必须在 .vimrc

中添加以下内容
set iskeyword+=-

您应该能够将上述内容推广到您需要的其他标签,甚至构建一个通用正则表达式来处理所有标签,正如您最初的意思。

如果您发布一个具体示例,说明您尝试使用的文件的外观以及您尝试获取的标签是什么,我相信我或其他人将能够帮助找出该文件的表达式.

关于css - 如何让ctags + scss发挥出色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724140/

相关文章:

javascript - 窗口缩小时动画图像从中心漂移

vim - 撤消自在 vim 中打开缓冲区以来的所有更改

linux - 在 CentOS 6.4 上构建 gvim 7.4

vim - 如何在 Vim 中水平拆分多个垂直拆分的窗口?

html - 如何有两个 div,一个在父 div 的左侧,另一个在右侧?

javascript - 在浏览器中调整到移动 View 时,图像会覆盖另一个 div

css - 使用 @at-root 时出现 SASS 错误

sass - 导入 scss 文件中 ~ 的含义

javascript - 导入的 sass 文件出现 grunt "undefined variable"错误

javascript - jQuery Accordion 链接不起作用