Лучшее решение - использовать для этого плагин.
Плагин ниже делает то, что вам нужно. Он найдет следующее вхождение pattern
(то есть маркер &todo
) ниже текущей позиции курсора, переместит курсор на линию под ним и отцентрирует эту позицию в окне. Если pattern
не найден ниже текущей позиции курсора, он будет искать снова в верхней части буфера, обеспечивая переход вокруг .
Скопируйте и вставьте следующий код Python в буфер и сохраните его в папке Sublime Text config User
как GoToPattern.py
.
import sublime
import sublime_plugin
class GotoPatternCommand(sublime_plugin.TextCommand):
def run(self, edit, pattern):
sels = self.view.sel()
# Optional flags; see API.
flags = sublime.LITERAL | sublime.IGNORECASE
start_pos = sels[0].end() if len(sels) > 0 else 0
find_pos = self.view.find(pattern, start_pos, flags)
if not find_pos and start_pos > 0:
# Begin search again at the top of the buffer; wrap around
# feature, i.e. do not stop the search at the buffer's end.
find_pos = self.view.find(pattern, 0, flags)
if not find_pos:
sublime.status_message("'{}' not found".format(pattern))
return
sels.clear()
sels.add(find_pos.begin())
self.view.show_at_center(find_pos.begin())
row, col = self.view.rowcol(find_pos.begin())
self.view.run_command("goto_line", {"line": row + 2})
# Uncomment for: cursor to the end of the line.
# self.view.run_command("move_to", {"to": "eol"})
Добавить привязки клавиш:
// The pattern arg, i.e. "&todo", can be changed to anything you want
// and other key bindings can also be added to use different patterns.
{"keys": ["???"], "command": "goto_pattern", "args": {"pattern": "&todo"}}
Добавьте запись Палитры команд в Default.sublime-commands
, если хотите:
{"caption": "GoToPattern: &todo", "command": "goto_pattern", "args": {"pattern": "&todo"}},
Эти ссылки могут быть вам полезны ST v. 2 API и ST v. 3 API .
P.S. Знаете ли вы, что у Sublime Text есть закладки? [На всякий случай, если вы этого не сделали.]