Usando o meio do mouse clique para colar o texto entra no modo de inserção

3

Como posso desativar o vim para entrar automaticamente no modo de edição ao clicar com o botão do meio do mouse?

Background: Eu gosto de criar strings de comandos como JJJj para concatir três linhas e depois ir uma linha para baixo, selecione esta string de comando com o mouse e cole novamente e novamente em vim usando o botão do meio do mouse. No entanto, recentemente, vim entra automaticamente no modo de inserção no meio do mouse, tornando este procedimento disfuncional. Eu não sei se é uma mudança em vim em si ou de alguma configuração padrão da minha distribuição (Gentoo), mas eu preciso de uma maneira de mudar isso novamente.

Para esclarecer uma coisa: Eu não tenho set mouse=a set (nem no meu ~/.vimrc nem em outro lugar. Então, por exemplo, os cliques do mouse esquerdo não movem o cursor para o local clicado. Por que razão a sugestão de usar set mouse= in ~/.vimrc não resolve este problema.

Além disso, estou falando sobre vim (em xterm ), não gvim .

Detalhes do sistema:

  • Gentoo Linux
  • Vanilla Linux 4.9.13
  • X.Org X Server 1.19.3
  • XTerm (327)
  • vim 8.0.386 (parece modificado pelo Gentoo)
por Bodo Thiesen 18.07.2017 / 23:33

2 respostas

4

Isso é totalmente respondido aqui . Veja a excelente resposta vinculada para detalhes e solução alternativa.

Resposta curta: coloque :set t_BE= no seu arquivo .vimrc .

    
por 07.02.2018 / 19:32
2

Tente desabilitar o modo de mouse do vim com :set mouse= . Adicione isso ao seu ~/.vimrc (sem o : ). Talvez você também precise comentar qualquer linha set mouse= existente, se houver uma.

Isso desabilitará todo o manuseio do mouse do vim, retornando à manipulação X padrão do mouse - ou seja, clique com o botão esquerdo para iniciar a seleção, clique com o botão direito para estender a seleção e clique com o botão do meio para colar. Em particular, note que clicar com o mouse na janela vim irá não mover o cursor do mouse, ou interagir com o modo de seleção Visual do vim.

BTW, em vez de usar no mouse para versões abaixo do padrão de recursos embutidos no vim, você considerou usar :map ou gravar macros?

É fácil mapear sequências de comandos para chaves, por ex. :map , JJJj para mapeá-los para a chave com vírgula.

Ou use q seguido de uma letra ou dígito para gravar uma macro em um registro. por exemplo. qaJJJjq para vincular JJJj a @a . Você pode então executar essa macro apenas digitando @a . Você também pode gravar várias macros e mapeá-las para , ou o que for necessário, para alternar rapidamente entre várias operações comuns. por exemplo. :map , @a

Eu uso a chave , (vírgula) para mapeamentos de curto prazo (ou seja, sessão de edição atual) porque ela não está mapeada para nada que eu usei. Para mapeamentos permanentes, uso as teclas de função e as defino no arquivo ~/.vimrc . por exemplo. map <F5> {!}par^V^M} mapeia a tecla F5 para mover o cursor para o início do parágrafo atual, canalizá-lo através do reformatador par paragraph e depois mover o cursor além do parágrafo ( vim construiu -na reformatação de parágrafo, mas prefiro par ).

Observe que mapeamentos e macros podem ser tão arbitrariamente complexos quanto você desejar. Gravar uma macro com q registrará o que você digitar até que você digite q novamente. e se você quiser incorporar um caractere de controle como ESC ou carriage-return em um comando :map , você pode usar Ctrl-V aka ^V para "escapar" ao digitar o mapa - por exemplo,

:map , Do^V^[!!date -R^V^MkJ

Isso mapeia , para substituir o restante da linha atual (da posição atual do cursor) pela data atual formatada pelo RFC-2822 & tempo.

ou se você quisesse pesquisar um padrão, juntar três linhas e pesquisar novamente, poderia fazer algo assim:

:map , JJJn

Em seguida, execute a primeira pesquisa com /pattern<enter> e pressione , para fazer a junção e pesquisar a próxima ocorrência. Nesse ponto, você pode escolher se deseja entrar e pesquisar novamente (pressione , novamente) ou apenas pesquise novamente (pressione n ) ou faça outra coisa completamente. Eu rotineiramente faço coisas como essa quando não quero fazer uma simples busca e substituição, mas quero decidir cada vez (por exemplo, quando é provável que haja muitas correspondências falso-positivas e isso levará mais tempo do que vale a pena ofereça um padrão de pesquisa de regexp perfeito)

O exemplo acima é apenas um exemplo muito simples do que isso pode ser usado - não é muito diferente apenas digitar 3J e então alternar entre pressionar n para find-next e . para repetir o último comando. ..e você pode, é claro, :map , .n . Ele realmente se torna útil quando você precisa repetir uma sequência de comandos que não podem ser repetidos com apenas .

    
por 19.07.2017 / 02:08

Tags