7

Я пробую следующее сопоставление клавиш, но оно перемещает курсор только на одну строку за раз. Я бы хотел, чтобы он двигался по 10 строк за раз. Кажется, параметр "количество" игнорируется.

{ "keys": ["alt+down"], "command": "move", "args": {"by": "lines", "forward": true, "amount": 10.0} },
{ "keys": ["alt+up"], "command": "move", "args": {"by": "lines", "forward": false, "amount": 10.0} }

3 ответа3

4

Вы можете создать плагин, который вызывается из привязки клавиш, затем этот плагин может собирать текущую строку и перемещать ее вниз или вверх.

Этот пост на официальных возвышенных форумах содержит пример того, как перемещаться вперед и назад на 10 строк с помощью плагина.

2

Я написал плагин для достижения этой цели: https://github.com/sflip/SublimeMoveMore

1

У меня также был успех с использованием команды нескольких команд для достижения объединения команд в привязках.

Для этого вам не понадобится отдельный плагин, хотя вам нужно будет немного повторить ту же команду. Вот пример из моего файла связывания.

{
    "keys": ["H"],
    "command": "run_multiple_commands",
    "args": {
        "commands": [
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
        ]
    },
    "context": [{"key": "setting.command_mode"}]
},

Выглядит ужасно, я знаю, но это, видимо, стандартный способ переместить курсор назад на 10 строк.

Если бы был какой-то способ узнать, что вызов команды для того, что наберет "10h" в винтажном режиме, это было бы более элегантно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .