Mapear Ctrl-Shift-V para uma ação no vi

3

Eu quero ser capaz de colar a partir da área de transferência no gVim no Windows usando Ctrl-Shift-V, assim como no Terminator.

No entanto, se eu colocar isso no meu .vimrc

 imap <C-S-V> "+gP

O atalho funciona sem shift, o que significa que eu posso colar texto com um simples Ctrl-V. Isso sobrescreve a capacidade já existente. Existe uma maneira de colar apenas com Ctrl-Shift-V?

    
por JetSpiegel 11.02.2014 / 18:42

3 respostas

5

O Vim não pode ver a diferença entre <C-V> , <C-v> e <C-S-V> .

Se você quiser mapeamentos com diferenciação de maiúsculas e minúsculas, precisará usar caracteres não modificados ou a tecla Alt (por exemplo, <A-v> ou <M-v> é diferente de <A-V> ou <M-V> ).

    
por 12.02.2014 / 04:31
3

Devido à forma como a entrada do teclado é tratada internamente, isso infelizmente não é geralmente possível hoje, mesmo no GVIM. Algumas combinações de teclas, como Ctrl + não-alfabético, não podem ser mapeadas e Ctrl + letra vs. Ctrl + Shift + letra não pode ser distinguida. (A menos que o seu terminal envie um código termcap para ele, o que a maioria não faz.) No modo de inserção ou de linha de comando, tente digitar a combinação de teclas. Se nada acontecer / for inserido, você não poderá usar essa combinação de teclas. Isso também se aplica a <Tab> / <C-I> , <CR> / <C-M> / <Esc> / <C-[> etc. (somente a exceção é <BS> / <C-H> .) Esse é um ponto problemático conhecido e o assunto de várias discussões sobre vim_dev e o canal de IRC #vim.

Algumas pessoas (principalmente Paul LeoNerd Evans) querem consertar isso (mesmo para o console Vim em terminais que apóiam isso), e lançaram várias propostas, cp. link

Mas a partir de hoje, nenhum patch ou voluntário ainda se apresentou, embora muitos tenham expressado o desejo de ter isso em um futuro lançamento importante do Vim 8.

    
por 28.02.2014 / 16:28
1

Você pode programar o Ctrl-Shift-v para ser interceptado pelo próprio terminal não vim, você pode configurar como essa interceptação acontece.

Para mim, eu inicio o aplicativo Konsole , clique no menu Configurações - > Configurar atalhos - > Pesquise Ctrl+Shift+v e remapeie para Ctrl-V . Então agora esta combinação de teclado não passará para o vim, e você pode fazer com que o Konsole faça a coisa certa para colar o conteúdo da área de transferência.

Se você estiver usando algum terminal diferente do Konsole, você pode procurar por sua funcionalidade para interceptar essa combinação de teclado e então segurar o vim para que ele faça a coisa certa.

    
por 01.06.2015 / 01:27