我的引用列表(1 2 3)输入如下:'(1 2 3)’,因为Sublime应用这个有用的(但不是在这种情况下)行为.
这是Default(OSX).sublime-keymap文件的相关位
// Auto-pair single quotes { "keys": ["'"],"command": "insert_snippet","args": {"contents": "'$0'"},"context": [ { "key": "setting.auto_match_enabled","operator": "equal","operand": true },{ "key": "selection_empty","operand": true,"match_all": true },{ "key": "following_text","operator": "regex_contains","operand": "^(?:\t| |\\)|]|\\}|>|$)",{ "key": "preceding_text","operator": "not_regex_contains","operand": "['a-zA-Z0-9_]$",{ "key": "eol_selector","operator": "not_equal","operand": "string.quoted.single","match_all": true } ] },{ "keys": ["'"],"args": {"contents": "'${0:$SELECTION}'"},"operand": false,"command": "move","args": {"by": "characters","forward": true},"operand": "^'",
解决方法
"auto_match_enabled": false
"my_auto_match_enabled": false
接下来,我们需要添加一组新的键绑定.我只是从你发布的一个,但我会解释我做了什么,因为它可能不是很明显.
{ "keys": ["'"],"context": [ { "key": "setting.my_auto_match_enabled",{ "key": "selector","operand": "source.clojure","match_all": true } ] }
首先,请注意,我将第一个上下文键从setting.auto_match_enabled切换到setting.my_auto_match_enabled.接下来,我添加了将限制范围的最后一个上下文条目.这样,只有当您不在source.clojure范围内时,代码段才会运行.你可能需要修改这个,因为我不知道clojure中的范围名称是什么,我只是猜测=).您将必须为所有单引号输入.现在,因为我们禁用了内置的自动配对,所以我们必须读取所有这些条目.在这些条目中,我们将再次将setting.auto_match_enabled更改为settings.my_auto_match_enabled.之后,一切都应该起作用.注意它实际上不一定是my_auto_match_enabled,这就是我所选择的.你可以根据你的需要改变它.
所有这一切,我没有完全测试所有这一切,所以评论如果你遇到问题.
说明:
所以现在你可能会问自己,为什么我需要禁用内置的自动匹配代码?那么这里的答案.即使我们在用户设置中阻止自动完成,使用类似的范围规则,仍然会回到默认状态,因此插入自动配对的报价,而不管我们在用户文件夹中的操作.现在你可能会想,但是如果我们修改默认设置文件怎么办?虽然我们可以这样做,再次插入相同的上下文设置,我们必须确保在任何后续更新中还原该文件.所以我想到底是由你决定的.如果您编辑默认文件,请记住,如果需要还原,则必须再次更改文件.
崇高文本3:
在ST3中,您可以执行实际修改的“默认”文件.这是因为在ST3中如何装入包装.插件不需要被提取到Packages文件夹,而是直接从.sublime-package文件(刚被重命名的zip)运行.此外,Packages目录中的任何文件优先于.sublime-package文件.因此,在ST3中,您将创建Packages / Default / Default(您的os在这里).sublime-keymap,并添加上下文行.随着更新不再修改Packages目录,它可以安全地从任何后续的更新.