Sublimetext3 “view.window().run_命令”和“view.run_命令”之间的区别

Sublimetext3 “view.window().run_命令”和“view.run_命令”之间的区别,sublimetext3,sublimetext,sublime-text-plugin,Sublimetext3,Sublimetext,Sublime Text Plugin,view.window.run\u命令和。。。和视图。运行_命令 以下是同一插件的两个版本,有两个小改动: 它将在保存时将选项卡转换为空格。您需要在“首选项”中的“保存:true”上展开“选项卡” 一: 二: 在这些变化中,它的行为发生了什么变化?在Sublime文本中,可以定义在应用程序级、窗口级或视图级操作的命令 通常只有文本命令修改缓冲区,或只影响当前缓冲区的设置,窗口命令修改当前窗口布局或其他相关设置,以及应用程序命令全局首选项等 根据我的经验,在视图对象上执行WindowCommand

view.window.run\u命令和。。。和视图。运行_命令

以下是同一插件的两个版本,有两个小改动:

它将在保存时将选项卡转换为空格。您需要在“首选项”中的“保存:true”上展开“选项卡”

一:

二:


在这些变化中,它的行为发生了什么变化?

在Sublime文本中,可以定义在应用程序级、窗口级或视图级操作的命令

通常只有文本命令修改缓冲区,或只影响当前缓冲区的设置,窗口命令修改当前窗口布局或其他相关设置,以及应用程序命令全局首选项等

根据我的经验,在视图对象上执行WindowCommand没有任何作用。例如:

view.run_command('set_layout', {"cells": [[0, 0, 1, 1], [1, 0, 2, 1]], "cols": [0.0, 0.5, 1.0], "rows": [0.0, 1.0]})
从ST控制台执行时,它将影响ST控制台的输入文本区域

window.run_command('insert', { 'characters': 'testing123' })
因此,答案是,根据命令的类型以及要在其上执行命令的视图是否为活动视图,可能会有差异


对于删除的导入,没有任何影响,因为插件中没有使用这些导入。

非常好的解释,但我仍然不理解一些事情。两个版本的插件都可以正常工作。但是,当我在控制台中手动启动view.window.run_命令“expand_tabs”时,它不起作用。查看。运行命令“展开选项卡”可以正常工作。为什么?因为在控制台中,视图引用主视图,view.window.active_视图也是如此,但是当它将命令从窗口转发到具有输入焦点的视图时,它将委托到控制台的输入文本区域,并且在空输入框上展开选项卡的效果是。。。没什么。只是为了记录:正如我今天在Coderwall发现的代码。
view.run_command('set_layout', {"cells": [[0, 0, 1, 1], [1, 0, 2, 1]], "cols": [0.0, 0.5, 1.0], "rows": [0.0, 1.0]})
window.run_command('insert', { 'characters': 'testing123' })