当我创建一个*.崇高-片段时,我需要得到这个作用域。view.scope_name(view.sel()[0].b)命令是我偶然发现的,ST2控制台可以方便地输出当前选择的选项卡的作用域名称。
我在ST控制台上对它进行了多次测试,但是它输出了不同的结果。
我只想知道为什么会这样?(顺便说一句,我用mac)

我也很好奇view.sel()[0].b是什么意思?point方法的arg scope_name的含义是什么?( officail引用演示了scope_name(point)是指在给定点分配给字符的语法作用域名称。)
发布于 2017-08-14 22:29:28
如果您出于任何原因需要知道一个范围(包括创建一个代码段),到目前为止,最简单的解决方案是从菜单中选择Tools > Developer > Show Scope Name (请参阅菜单项以查看平台的默认键绑定是什么)。这将显示一个弹出窗口,显示文档中当前插入符号位置的全部作用域。使用这种方法,您不需要记住任何API调用。
我在ST控制台上对它进行了多次测试,但是它输出了不同的结果。 我只想知道为什么会这样?
简而言之,每个文件都有一个与它相关联的语法(基于扩展名,您专门告诉Sublime要使用什么,等等),并且语法扫描整个文件,对文档中的每个字符应用一个或多个作用域。字符的作用域决定您所使用的配色方案对文本的颜色。
正如您在执行上述菜单命令时所看到的,可以有许多作用域应用于任意给定的游标位置;范围的列表越远,范围就越具体。因此,当您在文档中移动游标时,该特定字符的特性可能会发生变化,但作用域的第一部分保持不变。
因此,除非您只想在一个真正的、真正的特定位置触发一个片段(例如,“仅在C#类方法中的一个函数参数的数值常量前面),否则通常只需要作用域的第一部分,即source.js或text.html。
我也很好奇view.sel().b是什么意思?
在“崇高”中,每个选项卡都由一个view对象表示,该对象是一个对象,通过该对象对特定文件进行所有与崇高的交互。例如,编辑命令需要在特定的视图上执行,这样崇高才能知道您正在编辑哪个文件。
在每个视图中都有一个或多个游标进行编辑,每个游标代表一个选定的区域。即使显然没有选定文本,这也是正确的,在这种情况下,所选内容的长度为0。
调用view.sel()返回该视图中存在的所有选择的列表,下标[0]指示“第一个选择”。因此,view.sel()[0]的意思是“给我引用这个视图中的第一个选择(游标)”。
每个选择都由一个Region对象表示,它是一个包含两个点( a和b)的对象;a是选择开始的点,b是选择结束的点。在选择为空的情况下(即只闪烁光标),a和b是相同的值。
b可能比a小,这意味着您从右到左而不是从左到右选择文本。实际上,b告诉您光标当前所在的选择中的点。
因此,view.sel()[0].b的意思是“在此视图中获取对第一个选择的引用,然后告诉我该选择中的光标所处的位置”。
scope_name方法的arg点的平均值是什么?( officail引用演示了scope_name( point )是指在给定点分配给字符的语法作用域名称。)
从上面可以看出,Point表示文档中的单个位置。文件中的第一个字符位于0,文件中的最后一个字符位于点view.size() (一种告诉当前文件中字符数的方法)。
由于文件中每个字符的作用域可能不同,所以方法scope_name需要知道文件的哪一部分要知道作用域,因此需要告诉它您要询问的位置。
https://stackoverflow.com/questions/45666475
复制相似问题