Sublime:如何使用键盘箭头跳转 n 行?

Sublime: How can I jump n lines with the keyboard arrows?

当我必须用箭头逐行地对文本文件进行标记时,我感到非常乏味,但我觉得 PageDown/PageUp 让我迷失了原处。

有没有一种方法可以使用简单的快捷方式(如 ctrl+arrow down/up)简单地跳转 n 行?我认为 5 行非常适合我。

据我所知,没有实际的键盘快捷键可以让您将移动线命令与移动量结合起来。

相反,您可以录制并保存两个不同的宏。一个向上移动 5 行,另一个向下移动 5 行 -(开始录制宏,然后按向上或向下箭头 x 次。停止录制,然后保存。)。

然后您可以创建一个绑定以从您的首选项文件中调用它们:

[
    { "keys": ["shift+alt+up"], "command": "run_macro_file", "args": {"file": "res://Packages/User/up-five-lines.sublime-macro"} },
    { "keys": ["shift+alt+down"], "command": "run_macro_file", "args": {"file": "res://Packages/User/down-five-lines.sublime-macro"} }

]

内置的移动命令允许您以多种方式移动,但一次只能移动一个(例如向上一行、左一个字、向下一页等)。

正如 Ben 在他的回答中提到的那样,解决这个问题的一种方法是创建宏来进行您想要的动作,将键绑定到 运行 宏,然后您就可以开始了。

另一种选择是使用一个简单的插件,例如下面的插件(最初来自 this forum post),您可以通过从菜单中 selecting Tools > Developer > New Plugin... 来使用它,替换存根使用此代码编码,然后保存在默认位置,如 move_amount.py:

import sublime
import sublime_plugin

class MoveAmountCommand(sublime_plugin.TextCommand):
    def run(self, edit, amount=1, **kwargs):
        for _ in range(amount):
            self.view.run_command("move", args=kwargs)

这将创建一个名为 move_amount 的命令,它包装内部 move 命令,提供额外的参数 amount 以指示采取移动操作的次数。如果您有一些这样的绑定要制作,这会很方便,因为它减少了您必须制作的宏的数量,并且更容易自定义它们。

设置好后,您可以使用以下键绑定,根据需要修改数量:

{
    "keys": ["ctrl+up"], "command": "move_amount",
    "args": {"by": "lines", "amount": 5, "forward": false}
},
{
    "keys": ["ctrl+down"], "command": "move_amount",
    "args": {"by": "lines", "amount": 5, "forward": true}
},

请注意,这些键已经绑定到 scroll_lines 命令,该命令滚动视口但保留插入符号,因此如果您也使用该功能,您可能需要 select 不同的绑定.