1

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ドキュメントで見つけようとしましたか? しかし、結果はありません。

4

2 に答える 2

3

特にプラグインを構築するつもりがなく、Sublime Text 3 を使用している場合は、ctrlend. Sublime Text 2 にも存在するかどうかはよくわかりません。

具体的にプラグインを構築しようとしている場合は、go_to_lineソリューションの代わりに、組み込みの Sublime Text 3 コマンドのようなことを行うことができます。

{ "keys": ["ctrl+end"], "command": "move_to", "args": {"to": "eof", "extend": false} }

于 2014-10-04T01:13:44.863 に答える
2

Codes ingo_to_lineCommandは、最後の行番号を計算する方法を既に示しました。self.view.size()ファイル内の文字数を返します。したがって、ドキュメントself.view.rowcol(self.view.size())の最後の行と列の番号を返しpointます。ところで、私の知る限り、 apointは配列のインデックスのようなものです。

したがって、最後の行番号を計算するか、行番号として0を使用して最後の行に移動できます。

view.run_command("go_to_line", {'line':'0'})
于 2013-10-30T05:56:12.453 に答える