Autocomplete 如何预防&引用;(点)取消升华文本2中的自动完成?
我已经为我在工作中使用的专有语言定义了一些关键词:Autocomplete 如何预防&引用;(点)取消升华文本2中的自动完成?,autocomplete,sublimetext2,Autocomplete,Sublimetext2,我已经为我在工作中使用的专有语言定义了一些关键词: { "match": "\\b(util.tickettimelimit|util.user_ip|util.server_name|util.today)\\b", "name": "keyword.source.GTX2", "comment": "Tags" } 我还有一份完成文件: { "scope": "source.GTX2", "completions": [ "util.server_name
{ "match": "\\b(util.tickettimelimit|util.user_ip|util.server_name|util.today)\\b",
"name": "keyword.source.GTX2",
"comment": "Tags"
}
我还有一份完成文件:
{
"scope": "source.GTX2",
"completions":
[
"util.server_name",
"util.tickettimelimit",
"util.today",
"util.user_ip"
]
}
当我开始键入“util”时,我会看到正确的自动完成选项:
但一旦我输入“.”(点)自动完成选项,就会消失:
有没有办法改变这种行为?我只想把关键词作为一个整体来处理,忽略其中的点点滴滴
谢谢 不要按。(点)否则您将需要在点后键入至少一个字符,以便再次显示列表。使用括号或圆点告诉Sublime Text 2用户已完成键入
示例:如果我键入
for
,升华将显示下拉列表,但如果我键入for(
列表将消失。我已到处查看,自动完成代码似乎嵌入了可执行文件本身(至少在Windows上,我还没有检查我的Mac电脑),而不是分散在众多外部.py
文件中的一个,因此我甚至看不到如何执行自动完成的参数。我查看了默认包/默认/首选项。升华设置文件,虽然有几个选项与自动完成相关,但没有一个选项与我们正在执行的操作相关查找。在查看同一目录中的默认值(Windows).sublime keymap
文件时,我尝试添加以下内容:
{ "keys": ["."], "command": "hide_auto_complete", "context":
[
{ "key": "auto_complete_visible", "operator": "equal", "operand": false }
]
},
可惜它没有起作用。那里有许多auto_complete
命令,虽然这看起来是最有希望的,但我没有尝试其他命令
我还没有详尽地查看这个漂亮插件的源文件和配置文件(也可以从中获得),所以你可能可以在那里找到一个选项。你可能必须先完全禁用内置的自动完成功能,这样它才不会覆盖SCI
所以,我想现在你已经无能为力了。你可以随时留下一个,看看它是否进入,或者在上搜索/打开一个线程,看看其他人是否有任何建议。祝你好运!我认为@Ashish所指的是单词分隔符设置。你需要创建一个特定于语法的首选项(Preferences->Settings-More->Syntax-Specific-User
)。创建一个删除点的word\u分隔符
条目(从默认首选项复制作为基础)。这将为您提供所需的行为,但有一些事情需要注意。显然,圆点不会被视为单词分隔符,这将改变某些行为
我将以java为例。如果我有一个变量foo
,使用某种方法bar
,我可以输入foo.b
,并且bar
将显示为完成符。如果没有点作为分隔符,您将看不到这一点
另一个可能更容易理解的例子是在选择单词时。如果使用ctrl/cmd+d选择单词,它会选择单词,并由单词分隔符绑定。因此,如果我有foo.ba | r
,其中|表示光标位置,并使用ctrl/cmd+d,它会选择bar
。删除点作为单词分隔符,foo.bar将选择
如果我能澄清什么,请告诉我。有点晚了,但我希望这能有所帮助,创建一个新插件并添加以下代码:
import re
myObjects = {"util": ["server", "tickettimelimit", "today", "user_ip"]}
class CustomAutocomplete(sublime_plugin.EventListener):
def on_query_completions(self, view, prefix, locations):
if not view.match_selector(0, "source.GTX2"):
return
if prefix == "":
# get the last word in the current line
currentposition = view.sel()[0].begin()
currentline = view.full_line(currentposition)
text = view.substr(currentline)
words = re.findall("\w+", text)
lastword = words[-1]
if lastword in myObjects.keys():
# return a list of tuples, it represents snippets
# the first element is the trigger and the second one
# is the content
return [(x, x) for x in myObjects[lastword]]
return []
并在用户设置中添加下一个键:
"auto_complete_triggers":
[
{
"characters": ".",
"selector": "source.GTX2"
}
]
单击首选项>设置-用户,然后复制并粘贴以下内容
// Characters that are considered to separate words – does not include periods.
// Place comma at the end of the line if there are multiple keybindings.
"word_separators": "/\\()\"‘-:,;~!@#$%^&*|+=[]{}`~?"
从本网页:
我注意到我可以做“utiltoday”例如,如果可能的话,我想改变点的行为。有什么配置可以实现这一点吗?@fedxc-我从来没有见过任何配置选项可以解决这个问题,它可能是硬编码的。谢谢你的回答!我接受这个选项是因为投入了时间:dt这是一个解决方案,很简单。请参阅我的ans下面是wer。这不在键绑定中,而是在用户首选项中。此外,不需要花括号。很好!我一直在寻找类似“自动完成触发器”的东西。