我想为sublime text 3
创建插件,该插件可以移动到已打开文件的最后一行。现在我可以按其号码排队:
import sublime, sublime_plugin
class prompt_goto_lineCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.show_input_panel("Goto Line:", "", self.on_done, None, None)
pass
def on_done(self, text):
try:
line = int(text)
if self.window.active_view():
self.window.active_view().run_command("goto_line", {"line": line} )
except ValueError:
pass
class go_to_lineCommand(sublime_plugin.TextCommand):
def run(self, edit, line):
# Convert from 1 based to a 0 based line number
line = int(line) - 1
# Negative line numbers count from the end of the buffer
if line < 0:
lines, _ = self.view.rowcol(self.view.size())
line = lines + line + 1
pt = self.view.text_point(line, 0)
self.view.sel().clear()
self.view.sel().add(sublime.Region(pt))
self.view.show(pt)
但我不知道最后一行的数量。如何从对象sublime_plugin.WindowCommand
获取它?或者可能是另一种方法将光标移动到最后一行但没有得到它的数字?我试图在api documentation找到?但没有结果。
答案 0 :(得分:2)
go_to_lineCommand
中的代码已经向您展示了如何计算最后一个行号。 self.view.size()
返回文件中的字符数。因此,self.view.rowcol(self.view.size())
会返回文档中最后point
的行号和列号。顺便说一句,AFAIK,point
就像数组中的索引。
因此,您可以通过计算最后一个行号来到最后一行,或者只使用 0 作为行号。
view.run_command("go_to_line", {'line':'0'})
答案 1 :(得分:1)
对于那些不想专门构建插件并使用Sublime Text 3的人,您可能有兴趣学习 ctrl end 。我不太确定Sublime Text 2是否存在,以及。
正如您特别想要构建插件一样,您可以执行类似于内置Sublime Text 3命令的操作,作为go_to_line
解决方案的替代方法。
{ "keys": ["ctrl+end"], "command": "move_to", "args": {"to": "eof", "extend": false} }