Movimento ao estilo Vim (e mais) em Sublime Text 3

Sublime Text 3 é um ótimo editor e vem com um pacote chamado Vintageque emula alguns recursos do vim. No entanto, eu não queria a maior parte das funcionalidades deste pacote e também tenho minha própria ideia de como minhas chaves devem ser mapeadas.

Em vez de emular os modos do vim, gosto de usar uma tecla modificadora simples. Então, Control + [hjkl] moverá meu cursor à la vim. Minha tecla Caps Lock foi remapeada para Control, então esta é uma maneira agradável e conveniente de me mover sem ter que reposicionar minha mão direita nas teclas de seta.

Configurar isso é muito fácil. Em meu arquivo de mapa de teclado ST3 (Sublime Text> Preferences> Key Bindings – User) , adicionei as seguintes associações:

Movimento estilo Vim

{
"keys": ["ctrl+h"], "command": "move", "args": { "by": "characters", "forward": false }
},
{
"keys": ["ctrl+j"], "command": "move", "args": { "by": "lines", "forward": true }
},
{
"keys": ["ctrl+k"], "command": "move", "args": { "by": "lines", "forward": false }
},
{
"keys": ["ctrl+l"], "command": "move", "args": { "by": "characters", "forward": true }
},

Ei, não seria bom se eu pudesse adicionar também usar essas novas teclas de movimento para selecionar texto? Decidi que usar Command + Control + [hjkl] deve destacar o texto conforme eu movia:

Movimento estilo Vim com destaque

{
"keys": ["ctrl+super+h"], "command": "move", "args": { "by": "characters", "forward": false, "extend": true }
},
{
"keys": ["ctrl+super+j"], "command": "move", "args": { "by": "lines", "forward": true, "extend": true }
},
{
"keys": ["ctrl+super+k"], "command": "move", "args": { "by": "lines", "forward": false, "extend": true }
},
{
"keys": ["ctrl+super+l"], "command": "move", "args": { "by": "characters", "forward": true, "extend": true }
},

Ok, agora estamos chegando a algum lugar. Isso é muito bom para a mão direita, mas a esquerda não tem muito a fazer além de manter pressionada a tecla Control. Certamente podemos dar ao nosso amigo sinistro outro emprego.

Meu dedo mindinho está na tecla de controle, então tenho três outras que têm fácil acesso a ASD e QWE . Acho que é útil fazer Control + A ir para o início de uma linha, enquanto Control + D vai para o final. Parece lógico, não acha?

Da mesma forma, Control + Q deve funcionar como “page up”, enquanto Control + E funcionará como “page down”

Movimento da mão esquerda

{
"keys": ["ctrl+a"], "command": "move_to", "args": { "to": "bol" }
},
{
"keys": ["ctrl+d"], "command": "move_to", "args": { "to": "eol" }
},
{
"keys": ["ctrl+q"], "command": "move", "args": { "by": "pages", "forward": true }
},
{
"keys": ["ctrl+e"], "command": "move", "args": { "by": "pages", "forward": false }
},

Seria útil destacar linhas também, certo?

Movimento da mão esquerda com destaque

{
"keys": ["ctrl+super+a"], "command": "move_to", "args": { "to": "bol", "extend": true }
},
{
"keys": ["ctrl+super+d"], "command": "move_to", "args": { "to": "eol", "extend": true }
},

Embora seja útil realçar no início ou no final de uma linha, não parece muito útil realçar por páginas de cada vez. Em vez disso, talvez Control + Command + Q e Control + Command + E pudessem se mover entre os arquivos abertos.

Movendo-se entre arquivos

{
"keys": ["ctrl+super+e"], "command": "next_view"
},
{
"keys": ["ctrl+super+q"], "command": "prev_view"
}

Agradável.

Oh – há uma outra função que é um pouco inconveniente em um teclado mac: excluir o caractere na frente do cursor. Alcançar Fn + Delete coloca ambas as mãos fora da posição. Vamos consertar isso fazendo a mesma coisa acontecer com Control + S

Apagar para frente

{
"keys": ["ctrl+s"], "command": "right_delete"
},

Claro, você não precisa usar minhas atalhos de teclado – remixá-los e criar seu próprio estilo. Tem uma ideia melhor ou um atalho legal? Deixe-me saber nos comentários!

A documentação ST não oficial foi uma grande ajuda na configuração deles: http://docs.sublimetext.info/en/latest/

Além disso, se você quiser um movimento no estilo Vim em iTerm2, confira meu protocolo aqui: https://coderwall.com/p/c9vs3q

Edit: Se você deseja movimento no estilo vim em qualquer aplicativo, confira o incrível http://www.keyboardmaestro.com

Aproveitar!