Comecei esta resposta tentando dar-lhe uma solução apenas para a parte do Vim. Depois de ler esta página stackoverflow , parece que o Vim A implementação de curses para terminal não tem como diferenciar space
e shift-space
, a menos que curses ganhem libtermkey
support e seu terminal suporte <CSI>
seqüências.
Normalmente, e dependendo da situação, é possível inserir algo assim no arquivo ~/.vimrc
para obter um mapeamento:
nmap <S-space> :SomeValidVimCommandHere<CR>
ou
inoremap <S-space> <S-F30>
Eu não testei isso para ver se as maldições obtiveram o suporte necessário, para que você possa tentar fazer o mapeamento e ver se ele funcionará. Se isso é são ou não, não tenho idéia, mas gostaria de salientar que alguns mapeamentos geram um comportamento indefinido. Um exemplo é a chave de escape. Alguns anos atrás eu tentei indefinir a chave de escape para que ela não estivesse mais em uso, isso porque eu queria me forçar a parar de usar a chave escape
e usar a combinação jk
para obter o mesmo resultado. Isso criou para mim um comportamento "aleatório" que eu não conseguia entender. Pelo que entendi, isso ocorre porque a chave de escape é incorporada profundamente no modo de fazer as coisas do Vims. Isso pode se aplicar ao mapeamento que você está sugerindo, mas não tenho provas de que seja esse o caso.
Espero que isso lance alguma luz sobre o seu problema.