17

ST2を使用してOS X 10.8.4を使用しています。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 はビューポートの高さを取得するように見えますが、キー バインディング ファイル内からどのように使用できますか? これはこれに対する正しい解決策ですか?この振る舞いを得るために行くのは大変な作業だと思います。

前もって感謝します。

4

3 に答える 3

8

これを行うには、テキスト プラグインが必要です。ST フォーラムのユーザー bizoo のおかげで、これを自分で書く必要はありません。

http://www.sublimetext.com/forum/viewtopic.php?f=3&t=12793

これは私が期待したとおりに機能します。


Sublime Text 3 の更新:以下の手順に従ってください。ただし、ファイルの末尾.pyが.scroll_lines_fixed.py~/Library/Application Support/Sublime Text 3/Packages/User/


Sublime Text 2 の更新:これは明確ではありません。また、将来的に機能しなくなる可能性がある裸の URL も使用しています。したがって、ここでは、何をする必要があるかについてのより完全な説明を示します。

  1. 次の 4 行を 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 } }
    ]
    
  2. Sublime Text 内で、メニュー バーから [ツール] > [新しいプラグイン…] オプションを選択します。
  3. 新しいファイルの内容を次のように置き換えます。

    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})
    
  4. ファイルを ~/Library/Application Support/Sublime Text 2/Packages/ScrollLinesFixed/ に保存します。ScrollLinesFixed フォルダーを作成する必要があります。
  5. ステップ5はありません。
于 2013-06-21T09:30:59.487 に答える