Подтвердить что ты не робот

Sublime Text 2: Как перемещаться вверх/вниз, не перемещая курсор

Я на OS X 10.8.4, используя ST2. Когда я использую ключи Home и End, видовой экран перемещается, а курсор остается в покое. Это стандартное поведение Mac и то, что я ожидаю.

Однако, когда я использую Page Up (pageup/pgup) и Page Down (pagedown/pgdn), курсор перемещается вместе с окном просмотра. Это не то, как ведут себя другие приложения для Mac, и я бы хотел, чтобы курсор тоже оставался один для этих клавиш.

Мне удалось получить эту половину работы, добавив это в мои привязки клавиш:

[
   { "keys": ["pageup"], "command": "scroll_lines", "args" : {"amount": 30.0} },
   { "keys": ["pagedown"], "command": "scroll_lines", "args" : {"amount": -30.0} }
]

Однако суммы там жестко закодированы. Похоже, что viewport_extent получит мне высоту видового экрана, но как я могу использовать это из файла привязки ключей? Это даже правильное решение для этого? Я чувствую, что это ужасная работа, чтобы пойти на это.

Спасибо заранее.

4b9b3361

Ответ 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.

Ответ 2

Просто используйте Fn+up для доступа к странице и Fn+down для pagedown.

Ответ 3

Просто мой 2 ¢, но у меня есть моя настройка для прокрутки вверх или вниз со следующим:

{ "keys": ["super+up"], "command": "scroll_lines", "args": {"amount": 1.0} },
{ "keys": ["super+down"], "command": "scroll_lines", "args": {"amount": -1.0} }

Я использую Mac, поэтому клавишей "super" является клавиша команды, которая является первым ключом слева (или справа) пробела. Не уверен, что такое эквивалент на Windoze; возможно, это будет ключ "Пуск" или что-то в этом роде. Во всяком случае, работает как прелесть.