Usando o duplo clique em uma janela de terminal sob o Fedora 24 com o vim para copiar e colar

1

Estou muito acostumado a usar o clique duplo do mouse em um terminal para copiar uma palavra, como um nome de arquivo, usando o clique do meio do mouse em um terminal diferente para colar.

No entanto, este comportamento parece não funcionar sob o Fedora 24 ao usar o vim. Se eu clicar duas vezes em uma sessão vim, ela seleciona apenas um segmento do nome do arquivo e, na verdade, não copia essa parte para a área de transferência porque não posso colá-la com o clique do meio.

Existe alguma configuração no vim que causa esse comportamento (para que eu possa desativá-lo)? Se eu usar \vi file copy-paste funciona normalmente, mas perco o realce de sintaxe.

Estou usando o Fedora 24 e o vim versão 2: 8.0.124-2.fc24. Eu tenho os seguintes pacotes instalados: vim-common, vim-aprimorado, vim-filesystem, vim-minimal.

    
por Eric Sokolowsky 25.12.2016 / 13:53

1 resposta

1

Tudo isso é na ajuda on-line do vim. Mas é distribuído em todo o doco para várias variáveis e opções, e não há realmente um guia abrangente para a coisa toda.

Modo normal

Seu emulador de terminal tem dois modos. Em seu modo normal, ele lida com todas as interações do mouse. Quando você clica duas vezes, o emulador de terminal decide o que é uma palavra e faz o destaque da sua seleção. Quando você clica no meio, o emulador de terminal obtém a seleção do servidor X e a envia para o terminal como se fosse uma entrada de tipo comum.

Se você executar o mínimo de vim (que é o programa com o nome vi ), ou usar :set mouse= em full vim, isso é o que você obtém. Se você já tentou colar no vim usando o botão do meio do mouse, perceberá que o vim claramente não está envolvido na pasta, porque se você não estiver no modo de inserção no momento, o texto colado será tratado como comandos vim. / p>

Modo de relatório do mouse

No seu modo relatório de mouse , no entanto, o emulador de terminal não controla as próprias ações do mouse. Em vez disso, transmite as ações como se fossem entradas digitadas ordinariamente, codificadas como sequências de controle especiais. Um programa aplicativo envia outras sequências de controle para ativar e desativar o modo relatório de mouse . (Há muitas sutilezas para isso relacionadas ao fato de que alguns dos protocolos de relatórios de mouse inventados pelo mundo do software livre foram realmente ruins. Mas isso está além do escopo desta resposta.)

Quando você tem mouse=a ou mouse=h ou similar definido no vim, ele muda o modo de terminal em tempo real entre os modos de relatório normal e de mouse, dependendo da configuração exata de mouse e o que você está fazendo no Tempo. Por exemplo: Quando mouse=h , ativa o relatório do mouse quando você muda para uma tela de ajuda e recua quando você muda novamente.

Quando o modo de relatório do mouse está ativado, é o próprio vim que decide o que é uma palavra, o destaque da sua seleção e que comunica a seleção de e para o servidor X. Se você executar o vim (completo) com mouse=a ou similar, mas sem uma maneira de saber que existe uma GUI disponível, removendo a variável de ambiente DISPLAY de seu ambiente, você descobrirá que enquanto o trabalho de seleção e colagem < em> dentro > vim, ele não pode ver a seleção X e os aplicativos X não podem sua seleção. De fato, pode haver duas seleções na tela ao mesmo tempo, uma em um aplicativo X e outra no vim. (O vim mínimo não tem a capacidade de falar com um servidor X em seu código).

Decidindo o que é uma palavra

As regras para decidir o que uma palavra é diferente. Seu emulador de terminal, dependendo do programa emulador, pode ou não permitir que você configure como ele determina os limites das palavras. O roxterm, o Terminate e o LXTerminal possuem uma configuração "select-by-word characters" em seus diálogos de preferências. Outros simplesmente limitam isso.

Seja qual for o caso, ele pensa claramente que a/b/c/d é uma só palavra. Então, quando o emulador de terminal é responsável por lidar com as ações do mouse, é isso que ele define como a seleção em resposta a um clique duplo.

O vim tem seu próprio conjunto de configurações bastante independentes, que são baseadas no que é considerado uma "palavra-chave" e, portanto, vinculam-se à correspondência de expressão regular e à sintaxe. Claramente, o que você tiver configurado para entender o arquivo atual (a opção iskeyword sendo local para um buffer e ajustável por sua seleção de tipo de arquivo) considera a/b/c/d como várias palavras separadas por barras. Então é isso que você recebe quando o vim assume a responsabilidade de lidar com as ações do mouse.

Leitura adicional

por 26.12.2016 / 14:52

Tags