Sublimetext3 如何覆盖Sublime Text 3软件包';s(CSS3)完成语法

Sublimetext3 如何覆盖Sublime Text 3软件包';s(CSS3)完成语法,sublimetext3,Sublimetext3,我用的是带有升华文本3的软件包 我试图在键入CSS属性时重写该行为。例如,考虑到以下情况: body { | <- insertion point } 正文{ |来自completions/properties.py的补全由包的on\u query\u completions处理程序使用,升华使用该处理程序填充自动补全弹出窗口。因此,修改其中的内容(并重新启动升华,以便重新加载包)将改变自动完成弹出窗口中提供的内容(或在正确的情况下自动选择为最佳完成的内容) (“背景”,“背景:${

我用的是带有升华文本3的软件包

我试图在键入CSS属性时重写该行为。例如,考虑到以下情况:

body {
  | <- insertion point
}
正文{

|来自
completions/properties.py
的补全由包的
on\u query\u completions
处理程序使用,升华使用该处理程序填充自动补全弹出窗口。因此,修改其中的内容(并重新启动升华,以便重新加载包)将改变自动完成弹出窗口中提供的内容(或在正确的情况下自动选择为最佳完成的内容)

(“背景”,“背景:${1};”),
这指定
background
的autocomplete触发器应扩展到属性名称,后跟冒号和空格,光标保留在
${1}
,因此类似于
back
选项卡的内容将扩展到
background:|
;如果您想添加或修改这些类型的补全,可以在此处进行修改

另一方面,您面临的问题是:是什么触发了要插入的空间。这实际上根本不是与自动完成相关的事情,尽管从外观上看这并不完全明显

如果打开命令日志记录(
View>Show Console
sublime.log\u commands(True)
)并按照上面的步骤操作,当您按:时,您会在控制台中看到:

command: insert_snippet {"contents": ": $0;"}
这表明有一个键绑定为您执行此操作。使用命令调色板中的
查看包文件
,并使用
css3键映射
进行过滤,将允许您打开
css3/Default.sublime键映射
,其中第一个键绑定就是执行此操作的原因:

    { "keys": [":"], "command": "insert_snippet", "args": {"contents": ": $0;"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "selector", "operator": "equal", "operand": "meta.declaration-list.css, meta.at-rule.color-profile.block.css, meta.at-rule.counter-style.block.css, meta.at-rule.font-face.block.css, meta.font-feature-type-block.css, meta.at-rule.font-palette-values.block.css, meta.at-rule.page.block.css -meta.page-margin-box.css, meta.at-rule.viewport.block.css", "match_all": true },
            { "key": "selector", "operator": "not_equal", "operand": "meta.selector.css", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\}|$)", "match_all": true }
        ]
    },
应用于此绑定的
context
确保它在这种特定情况下触发,并且它手动触发
insert\u snippet
命令为您插入空格和分号

为了阻止它这样做,请将该绑定从此文件复制到您自己的密钥绑定文件中,并将
内容更改为不包含您不需要的空间

我不使用这个包,但基于
上下文中的作用域选择器
,它可以在几个不同的实例中触发,而不仅仅是在这个实例中;在所有情况下,它都会导致插入空格


如果你的肌肉记忆总是在输入
时插入空格,那就没什么大不了的;如果是这样的话,你就需要改变复制的绑定来改变
选择器
上下文行,这样它们只在你编辑属性时匹配。在这种情况下,升华会选择你的键绑定t在其他情况下,请不要退回到包中的选项。

是的!这是一个非常棒的答案–谢谢。这个
sublime.log\u命令(True)
提示将派上用场。答案非常棒,花了数小时寻找解决方案。谢谢。