2014-01-22 3 views
32

В настоящее время ярлык Go to line (CTRL + G в windows/linux) позволяет перемещаться только по определенной строке.Sublime Text - строка и столбец Goto

Было бы неплохо, если бы необязательно указать номер столбца после запятой, например.

:30,11 перейти к строке 30, столбец 11

Есть ли плагин или пользовательский скрипт для достижения этой цели?

+0

См. Также ["как перейти к столбцу по его числу в возвышенном тексте 3" в Super User] (http://superuser.com/questions/636699/how-to-go-to-column-by-its -количество-в-возвышенного-текст-3). –

ответ

48

Обновление 3

Это теперь part of Sublime Text 3 начиная сборки числа 3080:

Гото Все, что поддерживает: синтаксис Col в дополнение к:: линия линия

Например, вы можете использовать :30:11, чтобы перейти к строке 30, колонка 11.

Update 1 - устаревший

Я только что понял, ты меченый это как sublime-text-3 и я использую 2. Это может работать для вас, но я не проверял в 3

Update 2 - устаревший

  • Добавлено некоторые здравомыслие проверки и некоторые модификации GotoRowCol.py
  • Создано GitHub репо sublimetext2-GotoRowCol
  • Закупорен и отправлен запрос на потянуние для фиксации к package_control_channel

Редактировать 3: выполнены все требования repo package_control. этот пакет теперь доступен в репозитории пакетов в приложении (install -> 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 и откройте GotoRowCol.sublime-commands в возвышенном тексте. Вставьте это в файл:

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

Сохраните файл.Это должно зарегистрировать плагин GotoRowCol в возвышенной текстовой системе. Чтобы использовать его, нажмите ctrl + shift + p затем введите GotoRowCol и нажмите ENTER. Появится подсказка в нижней части возвышенного текстового окна с двумя предварительно заполненными цифрами, первая - это строка, к которой вы хотите перейти, вторая - столбец. Введите желаемые значения, затем нажмите ENTER.

Я знаю, что это сложная операция, но это то, что у меня есть сейчас, и работает для меня.

+1

+1 очень красиво, создайте репозиторий github и зарегистрируйте его в канале менеджера пакетов –

+0

Я изучу его. –

+0

Готово. См. «Редактировать 2» моего ответа, ILan. –