web-dev-qa-db-fra.com

Sublime Text - Aller à la ligne et à la colonne

Actuellement, le raccourci Aller à la ligne (CTRL + G dans Windows/Linux) permet uniquement de naviguer vers une ligne spécifique.

Ce serait bien d'autoriser éventuellement le numéro de colonne à être spécifié après une virgule, par ex.

:30,11 pour passer à la ligne 30, colonne 11

Existe-t-il un plugin ou un script personnalisé pour y parvenir?

34
Leo Gallucci

Mise à jour 3

C'est maintenant partie de Sublime Text commençant dans le numéro de build 3080:

Goto Anything prend en charge: la syntaxe line: col en plus de: line

Par exemple, vous pouvez utiliser :30:11 pour passer à la ligne 30, colonne 11.

Mise à jour 1 - obsolète

Je viens de réaliser que vous avez marqué ceci comme sublime-text-3 et j'en utilise 2. Cela peut fonctionner pour vous, mais je n'ai pas testé en 3.

Mise à jour 2 - obsolète

  • Ajout de quelques vérifications d'intégrité et de quelques modifications à GotoRowCol.py
  • Création du dépôt github sublimetext2-GotoRowCol
  • Forké et soumis une demande d'extraction pour valider l'ajout à package_control_channel

Edit 3: toutes les exigences du référentiel package_control ont été remplies. ce package est désormais disponible dans le référentiel de packages de l'application (install -> GotoRowCol à installer).

Moi aussi, j'aimerais cette fonctionnalité. Il y a probablement une meilleure façon de distribuer cela, mais je n'y ai pas vraiment investi beaucoup de temps. J'ai lu un tutoriel de développement de plugin très rapidement et j'ai utilisé un autre code de plugin pour patcher cette chose ensemble.

Sélectionnez l'option de menu Tools -> New Plugin

Un nouveau modèle d'exemple s'ouvrira. Collez-le dans le modèle:

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 (->)

Enregistrez le fichier. Lorsque la boîte de dialogue "Enregistrer sous" s'ouvre, elle doit se trouver dans le Sublime Text 2\Packages\User\ répertoire. Naviguez d'un niveau vers le haut et créez le dossier Sublime Text 2\Packages\GotoRowCol\ et enregistrez le fichier sous le nom GotoRowCol.py.

Créez un nouveau fichier dans le même répertoire Sublime Text 2\Packages\GotoRowCol\GotoRowCol.sublime-commands et ouvrez GotoRowCol.sublime-commands en texte sublime. Collez-le dans le fichier:

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

Enregistrez le fichier. Cela devrait enregistrer le plugin GotoRowCol dans le système de texte sublime. Pour l'utiliser, appuyez sur ctrl + shift + p puis tapez GotoRowCol et appuyez sur ENTER. Une invite apparaîtra au bas de la fenêtre de texte sublime avec deux nombres pré-remplis, le premier est la ligne vers laquelle vous voulez aller, le second est la colonne. Saisissez les valeurs souhaitées, puis appuyez sur ENTER.

Je sais que c'est une opération complexe, mais c'est ce que j'ai en ce moment et qui travaille pour moi.

53
Bill Stidham