Diferenciando entre tecla Shift esquerda e direita

7

Tenho o mau hábito de usar a tecla Shift do mesmo lado do teclado que a letra ao amarrar letras maiúsculas. Para digitar a D, por exemplo, pressione o turno esquerdo com o mindinho esquerdo e dcom o dedo indicador esquerdo. É melhor usar a mudança à direita em combinação com as teclas do lado esquerdo do teclado e vice-versa .

Para me livrar desse hábito, gostaria de desativar as combinações de qualquer tecla Shift com as teclas do mesmo lado do teclado. Posso mapear shift-d com <S-d>, mas isso se aplica a ambas as teclas shift. Existe uma aplicação apenas à tecla Shift direita?

Andreas
fonte
3
Eu não acho que isso seja possível no Vim diferenciar um A( S-acom deslocamento para a direita ou para a esquerda). Talvez tente procurar a sua configuração de terminal ou teclado.
nobe4
Apenas uma observação - por que esse é um mau hábito? Digite, no entanto, funciona para você e é mais confortável.
Fruglemonkey 02/03
@ frugle É um mau hábito, porque é desconfortável e muitas vezes me faz esticar meus dedos em posições estranhas que interrompem minha digitação. Para mim, a beleza do vim é como ele permite velocidade e fluxo, e esse hábito quebra isso.
Andreas
Ponto justo. Mas, como nota RE: velocidade e fluxo, você não interromperá o fluxo se você digitar habitualmente <LShift> + d, que não produz nada, e, em vez disso, lembre-se de usar o mapeamento <Rshift> + d? E há momentos em que o uso de <LShift> + d pode ser garantido (digitação com uma mão ou se a mão direita estiver em um teclado numérico etc.), que esse mapeamento impedirá que você faça, apresentando outras possíveis interrupções na linha. Parece que esse mapeamento causa um problema circular (o problema A causa o sintoma B, corrija o problema A com a solução C que também causa o sintoma B). Melhor para corrigir a raiz do problema
fruglemonkey
11
A idéia é implementar o mapeamento apenas para desaprender o mau hábito e remover o mapeamento. Eu fiz isso antes com algum sucesso. Eu tenho um mapeamento <jj> para excluir a última palavra enquanto estiver no modo de inserção, para evitar a necessidade de esmagar repetidamente o backspace. Para ter a oportunidade de usá-lo, também tive que mapear as sucessivas prensas no backspace para não fazer nada. Quando aprendi a não agitar no backspace, removi esse segundo mapeamento.
Andreas

Respostas:

9

Nas Perguntas frequentes do Vim 20.4. "Não consigo criar um mapeamento para a chave. O que há de errado?" :

1) Primeiro, verifique se a chave foi passada corretamente para o Vim. Para determinar se esse é o caso, coloque o Vim no modo Inserir e pressione Ctrl-V (ou Ctrl-Q se o Ctrl-V for remapeado para a operação de colar (por exemplo, no Windows, se você estiver usando o arquivo de script mswin.vim) seguido pela sua chave.

Se nada aparecer no buffer (e supondo que você tenha 'showcmd' ativado, ^ V permaneça exibido na parte inferior direita da tela do Vim), então o Vim não obtém sua chave corretamente e não há nada a ser feito além de selecionando uma chave diferente para o seu mapeamento ou usando o GVim, que deve reconhecer a chave corretamente.

Na minha configuração, emitir Ctrl- q+ Left Shfit- dexibe 'D' e emitir Ctrl- q+ Right Shfit- dleva ao mesmo resultado. Então, pelo menos aqui, o Vim é incapaz de detectar a diferença.

Mas talvez você possa usar outra ferramenta para ajudá-lo nisso; por exemplo, no Windows, você pode tentar o AutoHotkey com algo assim:

#ifWinActive ahk_class Vim
LShift & d::MsgBox You pressed the wrong 'Shift'!
#ifWinActive

ou simplesmente ignorar a combinação:

#ifWinActive ahk_class Vim
LShift & d::
#ifWinActive
mMontu
fonte
Alguma sugestão para Mac? Vou esperar um pouco e existem outras respostas. Caso contrário, eu aceitarei isso.
Andreas
@Andreas este site alternativas listas AHK para Mac
mMontu
Eu recomendo Seil (sucessor do mosquetão) :)
nobe4
Para OSX há agora Mosquetão-Elements com configurações prontas para desativar esquerda-shift com letras mão direita etc. pqrs.org/osx/karabiner/complex_modifications/#key_specific
Andreas