我插件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)
我想提高它讓我移動光標到第一行包含指定字符串。這就像上搜索文件: 例如,如果傳遞給它的字符串"class go_to_lineCommand"
插件必須將光標移動到第17行:
,並可能選擇串class go_to_lineCommand
。
問題被歸結爲尋找regionWithGivenString
,然後我可以選擇它:
self.view.sel().add(regionWithGivenString)
但不知道方法來獲取regionWithGivenString
。
我試圖
- 找到關於谷歌:sublime plugin find and select text
- 檢查api
但還是沒有結果。
爲什麼你需要插件的地獄?爲什麼你不能只使用Ctrl + G/Ctrl + F? – igor
它只是快速導航的大插件的一部分:想象一下我在'冰咖啡腳本中獲得代碼:'a =(require'./c/d/e/file.js')。doMethod()'。我將光標移動到這一行上,按下快捷鍵,這個崇高的插件打開文件'file.js'併爲我選擇'doMethod'方法。 –
我知道你已經有了一個解決方案,但只是想我也會指出你在文檔方面的正確方向。看看'view#find'和'view#find_all'。他們分別返回一個地區和一系列地區。當然,最終結果將與lhuang提供的插件相同。 – skuroda