Sublime Text 3 - CSS 无需键入 属性 值即可自动完成

Sublime Text 3 - CSS Autocomplete WITHOUT typing property value

所以我知道当您开始输入值时,自动完成功能非常有用。例如,当您在 text-align:c 中键入 "c" 时,会弹出可用的自动完成值(例如 center, left, right)。

然而,当我使用 Dreamweaver 时,对于具有特定值选项的属性,例如 text-align (center, right, left), display (block, inline-block), cursor (pointer, default), etc.,自动完成弹出窗口将在键入 属性 后立即显示,它不会等到我开始键入价值。在输入 text-align: 后,它会显示自动完成弹出窗口,给我选项 center, right, left.

值自动完成应该在我的 属性 自动完成触发后立即触发:

知道如何在 Sublime Text 3 中实现这一点吗?

您可以试试这个包。这个包索引你的 .less 和 .scss(或 .sass)并缓存你的 mixin、变量、class 或 id 名称并在 html 和 [= 上自动完成15=]。它使用混合参数自动完成你的 less 和 sass 混合。它还支持 emmet 完成并在弹出 window 上获取你的 css classes。 -

https://github.com/subhaze/CSS-Extended/

您可以让 ST 在使用小插件和一些首选项插入完成后立即再次显示自动完成弹出窗口:

在 ST 中打开 CSS 文件后,打开首选项菜单和 select 首选项 - 语法特定。在右侧的设置中添加以下内容:

"auto_complete_triggers":
[
    {
        "characters": ": ",
        "selector": "source.css meta.property-list.css meta.property-value.css"
    },
],

并保存。这将告诉 ST 在输入 : 或 space 时自动在 CSS 文件中显示自动完成弹出窗口,而语法需要 属性 值。

现在,不幸的是,ST 不认为自动完成具有 "typed" 任何东西,因此当 selecting 属性 值时不会自动触发此触发器 text-align 来自自动完成弹出窗口,它插入 text-align:。所以,为了解决这个问题,这是我们需要一个小插件的地方。从工具菜单中,选择开发人员 -> 新插件...

Select 所有文本并替换为以下内容并将其保存在 ST 推荐的文件夹 (Packages/User/) 中,如 show_autocomplete_after_completion.py:

import sublime
import sublime_plugin


class AutoCompleteListener(sublime_plugin.EventListener):
    def on_post_text_command(self, view, command_name, args):
        if command_name in ('commit_completion', 'insert_best_completion'):
            act = view.settings().get('auto_complete_triggers', [])
            scope = view.scope_name(view.sel()[0].begin())
            char = view.substr(view.sel()[0].begin() - 1)
            for trigger in act:
                if sublime.score_selector(scope, trigger['selector']) > 0:
                    if char in trigger['characters']:
                        view.run_command('auto_complete', { 'insert_best_completion': False })
                        break

这个插件基本上检测何时插入完成(尽管由于 ST API 的限制,它无法检测何时用鼠标单击条目 - 参见 https://github.com/SublimeTextIssues/Core/issues/1166),并且如果紧接在插入符号之前的 text/character 匹配设置中定义的自动完成触发器之一,那么它将再次显示自动完成弹出窗口。