我在CSS3包中使用Sublime Text 3。
我试图在键入CSS属性时覆盖行为。例如,给出以下内容:
body {
| <- insertion point
}
如果我键入background
并按Tab,结果将是background:
,这是我想要的。
[如果键入background:
,则在键入冒号的那一刻,该行将变为background: ;
,插入点位于分号之前。我不希望这样,因为我总是在冒号后面输入一个空格,最后在该空格后输入两个空格。我不想重新训练我的肌肉记忆,因为所有其他编辑环境都不会自动添加空间。
我真的很想弄清楚如何忽略此完成行为。
我已经尝试编辑CSS3包中的completions/properties.py
文件,但这似乎不是完成此操作的源头。不幸的是,我对如何将ST软件包组合在一起以弄清楚这一点还不了解。
来自completions/properties.py
的补全由程序包的on_query_completions
处理程序使用,Sublime用来填充自动完成弹出窗口。因此,在此处修改内容(并重新启动Sublime,以便重新加载软件包)将更改自动完成弹出窗口中提供的内容(或在正确的情况下可以自动选择为最佳完成的内容)。
("background", "background: ${1};"),
这指定background
的自动完成触发器应扩展到属性名称,后跟冒号和空格,并且光标留在${1}
处,因此类似back
Tab扩展到background: |;
;如果要添加或修改这些补全,可以在这里进行修改。
另一方面,您遇到的问题是按下:会触发要插入的空格。实际上,这根本不是与自动填充相关的东西,尽管从外观上并不完全清楚。
如果打开命令记录(View > Show Console
,sublime.log_commands(True)
)并按照上面的步骤操作,当您按:时,您会在控制台中看到以下内容:
command: insert_snippet {"contents": ": $0;"}
这表明存在为您执行此操作的键绑定。使用命令面板中的View Package File
并使用css3 keymap
进行过滤,可以打开CSS3/Default.sublime-keymap
,其中的第一个键绑定就是这样做的内容:
{ "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_snippet
命令为您插入空格和分号。
为了阻止它执行此操作,请将该绑定从该文件复制到您自己的键绑定文件中,然后将contents
更改为不包含不需要的空间。
我不使用此包,但是基于context
中的范围选择器,它可以在几个不同的实例中触发,而不仅仅是在这个实例中触发;在所有情况下,它也会导致空间的插入。
如果您的肌肉记忆力总是随着输入:
而插入空格,那没什么大不了;如果是,则需要更改复制的绑定以更改selector
上下文行,以便仅在编辑属性时才匹配。那将导致Sublime在这种情况下选择您的键绑定,但在其他情况下又退回到软件包中的键绑定。