gpt4 book ai didi

css - 如何让 ctags + scss 发挥得淋漓尽致

转载 作者:行者123 更新时间:2023-12-02 22:41:22 25 4
gpt4 key购买 nike

更新:这个问题已经过修改,以反射(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 found: tag_name

考虑以下模式:

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

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

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

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

ctags 不索引 ticker 混合宏。但是,我可以使用 ctags 直接从 SCSS gem 中查找方法(例如 darken)。

最佳答案

在最后一个 { 之前添加一个 \ 在使用 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。因此,如果我在数据中的 left 中,点击 ctrl+] 它会跳转到定义数据的行。您必须小心 other 关键字,因为它在单词中有一个 -。因此,如果您在 table 上并按 ctrl+],您将得到相同的错误标记未找到。为此,您必须在 .vimrc

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

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com