Sublime Text - 转到行和列

时间:2014-01-22 13:04:52

标签: sublimetext sublimetext3 sublime-text-plugin

目前,Go to line快捷方式(Windows / linux中的CTRL + G)仅允许导航到特定行。

最好选择允许在逗号后面指定列号,例如

:30,11转到第30行第11行

是否有任何插件或自定义脚本可以实现此目的?

1 个答案:

答案 0 :(得分:52)

更新3

现在part of Sublime Text 3从内部版本号3080开始:

  

Goto Anything支持:line:col语法以及:line

例如,您可以使用:30:11转到第30行第11行。

更新1 - 过时

我刚刚意识到你已将此标记为sublime-text-3并且我正在使用2.它可能适合您,但我没有在3中进行过测试。

更新2 - 过时

编辑3:已满足package_control repo的所有要求。此软件包现在可在应用程序的软件包存储库中找到(安装 - > GotoRowCol进行安装)。

我也想要这个功能。可能有更好的方式来分发这个,但我并没有真正投入大量时间。我非常快速地阅读了一些插件开发教程,并使用了一些其他插件代码来修补这个东西。

选择菜单选项Tools - > New Plugin

将打开一个新的示例模板。将其粘贴到模板中:

import sublime, sublime_plugin


class PromptGotoRowColCommand(sublime_plugin.WindowCommand):
        def run(self, automatic = True):
                self.window.show_input_panel(
                        'Enter a row and a column',
                        '1 1',
                        self.gotoRowCol,
                        None,
                        None
                )
                pass

        def gotoRowCol(self, text):
                try:
                        (row, col) = map(str, text.split(" "))

                        if self.window.active_view():
                                self.window.active_view().run_command(
                                        "goto_row_col",
                                        {"row": row, "col": col}
                                )
                except ValueError:
                        pass


class GotoRowColCommand(sublime_plugin.TextCommand):
        def run(self, edit, row, col):
                print("INFO: Input: " + str({"row": row, "col": col}))
                # rows and columns are zero based, so subtract 1
                # convert text to int
                (row, col) = (int(row) - 1, int(col) - 1)
                if row > -1 and col > -1:
                        # col may be greater than the row length
                        col = min(col, len(self.view.substr(self.view.full_line(self.view.text_point(row, 0))))-1)
                        print("INFO: Calculated: " + str({"row": row, "col": col})) # r1.01 (->)
                        self.view.sel().clear()
                        self.view.sel().add(sublime.Region(self.view.text_point(row, col)))
                        self.view.show(self.view.text_point(row, col))
                else:
                        print("ERROR: row or col are less than zero")               # r1.01 (->)

保存文件。当“另存为”对话框打开时,它应位于Sublime Text 2\Packages\User\目录中。向上导航一个级别并创建文件夹Sublime Text 2\Packages\GotoRowCol\并保存名为GotoRowCol.py的文件。

在同一目录Sublime Text 2\Packages\GotoRowCol\GotoRowCol.sublime-commands中创建一个新文件,并在sublime文本中打开GotoRowCol.sublime-commands。将其粘贴到文件中:

[
    {
        "caption": "GotoRowCol",
        "command": "prompt_goto_row_col"
    }
]

保存文件。这应该在sublime文本系统中注册GotoRowCol插件。要使用它,请点击ctrl + shift + p,然后输入GotoRowCol并点击ENTER。提示将显示在sublime文本窗口的底部,预先填充两个数字,第一个是您要去的行,第二个是列。输入您想要的值,然后点击ENTER

我知道这是一项复杂的操作,但这就是我现在所拥有的并且正在为我工​​作。