我有一个插件,可以打开文件,然后在加载时调用
view.run_command("goto_line", {"line": item["Line"]})
在左侧的装订线中,它似乎转到该行,因为其行号在装订线中突出显示,但是该文件中没有插入符号。有没有办法让插入符号也开始在那条线上闪烁?
更新:我注意到,如果文件已经打开,插入符号就会出现在该行上,因此只有当您打开一个关闭的文件时,插入符号才会不存在
最佳答案
短篇故事:
我在开发插件时多次遇到这个问题。这是为我完成的行:
self.view.window().open_file("{0}:{1}:{2}".format(full_file_path, line_num, 0), sublime.ENCODED_POSITION)
这将打开 full_file_path
并跳转到 line_num
,即使文件尚未打开。
长话短说:
该行的前几个单词取决于您的命令类继承的内容。出于我的目的,这一行被放置在一个扩展 sublime_plugin.TextCommand 的类中。扩展sublime_plugin.TextCommand
的类没有与窗口
直接通信的方式。相反,它们引用 window
作为 view
对象的方法,该对象是 sublime_plugin.TextCommand
的原生方法。 (该方法返回对 window
对象的引用)。
如果要将此行放置在扩展 sublime_plugin.WindowCommand
的类中,则需要进行如下修改:
self.window.open_file("{0}:{1}:{2}".format(full_file_path, line_num, 0), sublime.ENCODED_POSITION)
注意:没有 view
对象,并且 window
后面的括号被省略,因为我们不再通过 view
方法引用它.
如图所示here ,window() 方法“返回对包含 View 的窗口的引用”,从而允许我们访问 these methods即使我们不是直接继承自 sublime_plugin.WindowCommand
。
关于python - 在 Sublime 中设置插入符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25733672/