Ответ 1
Для этого требуется текстовый плагин. Благодаря пользователю bizoo на форумах ST вам не нужно писать это самостоятельно:
http://www.sublimetext.com/forum/viewtopic.php?f=3&t=12793
Это работает точно так, как я ожидал.
Обновление: Это неясно, а также использует пустой URL, который может умереть в будущем. Итак, вот более полное объяснение того, что вам нужно сделать.
-
Добавьте эти четыре строки в Sublime Text 2 > Preferences > Key Bindings - User, внутри любых квадратных скобок, которые уже находятся в файле:
[ { "keys": ["ctrl+up"], "command": "scroll_lines_fixed", "args": {"amount": 1.0 } }, { "keys": ["ctrl+down"], "command": "scroll_lines_fixed", "args": {"amount": -1.0 } }, { "keys": ["pageup"], "command": "scroll_lines_fixed", "args" : {"by": "pages", "amount": 1.0 } }, { "keys": ["pagedown"], "command": "scroll_lines_fixed", "args" : {"by": "pages", "amount": -1.0 } } ]
- В пределах Sublime Text выберите в меню пункт Сервиs > Новый плагин...
-
Замените содержимое нового файла на следующее:
import sublime, sublime_plugin class ScrollLinesFixedCommand(sublime_plugin.TextCommand): """Must work exactly as builtin scroll_lines command, but without moving the cursor when it goes out of the visible area.""" def run(self, edit, amount, by="lines"): # only needed if one empty selection if by != "lines" or (len(self.view.sel()) == 1 and self.view.sel()[0].empty()): maxy = self.view.layout_extent()[1] - self.view.line_height() curx, cury = self.view.viewport_position() if by == "pages": delta = self.view.viewport_extent()[1] else: delta = self.view.line_height() nexty = min(max(cury - delta * amount, 0), maxy) self.view.set_viewport_position((curx, nexty)) else: self.view.run_command("scroll_lines", {"amount": amount})
- Сохраните файл в ~/Library/Application Support/Sublime Text 2/Packages/ScrollLinesFixed/. Вам нужно будет создать папку ScrollLinesFixed.
- Нет шага 5.