No Sublime Text 2, como faço um mapeamento de teclas para mover o cursor para cima ou para baixo em várias linhas?

7

Estou tentando o mapeamento de chave a seguir, mas ele só move o cursor uma linha por vez. Eu gostaria de mover 10 linhas de cada vez. Parece que o parâmetro "amount" é ignorado.

{ "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} }
    
por Max 19.10.2012 / 22:33

3 respostas

4

Você pode criar um plug-in que é chamado a partir de uma associação de chave. Esse plug-in pode, então, coletar a linha atual e movê-la para baixo ou para cima.

Esta postagem nos fóruns sublimes oficiais tem um exemplo de como mudar para trás e para frente 10 linhas com um plugin.

    
por 19.10.2012 / 23:26
2

Eu escrevi um plug-in para conseguir isso: link

    
por 18.12.2015 / 20:19
1

Eu também tive sucesso usando o comando de vários comandos para alcançar concatenação de comandos em ligações.

Você não precisará de um plugin separado para isso, mas precisará repetir o mesmo comando um pouco. Aqui está um exemplo do meu arquivo de ligação.

{
    "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"}]
},

Parece horrível, eu sei, mas esta é aparentemente a maneira padrão de fazer seu cursor voltar 10 linhas.

Se houvesse alguma maneira de descobrir qual é a invocação do comando para qualquer digitação "10h" no modo antigo, isso seria mais elegante.

    
por 12.08.2013 / 17:47