Compilação e instalação do Vim e habilitando a copiar e colar com o mouse

Compilação e instalação a partir do fonte do Vim no Debian 10, mas deve funcionar para outras distribuições adaptando-se os comandos.

[ Hits: 5.191 ]

Por: Buckminster em 07/10/2021


Habilitando copiar e colar



Agora vamos habilitar o copiar e colar com o mouse no Vim. Entre nesse arquivo:

# vim /usr/local/share/vim/vim82/defaults.vim

No Vim instalado pelo gerenciador (no caso o apt-get) é nesse caminho:

# vim /usr/share/vim/vim81/defaults.vim

Mas em qualquer caso, procure pelo arquivo:

# find / | grep defaults.vim

(esse comando funciona na maioria das distribuições Linux)

Procure as seguintes linhas que estarão aproximadamente a partir da linha 80 e troque mouse=a por mouse=r:

if has('mouse')
  if &term =~ 'xterm'
    set mouse=a  #coloque r no lugar de a
  else
    set mouse=nvi #deixe como está
  endif
endif

Salve e saia:

:wq

No Vim instalado pelo gerenciador são somente essas linhas abaixo porque na instalação do repositório o gerenciador já reconhece qual o X (Xfce, Kde, Gnome etc):

if has('mouse')
  set mouse=a #coloque r no lugar de a
endif

Tem alguns que comentam as linhas acrescentando - (aspas duplas) no início do bloco. Eu prefiro setar "r" no lugar de "a".

Teste abrindo um arquivo com o Vim, selecione usando o mouse e verá que o botão direito com a opção "Copiar" está habilitado e funcionará para copiar e colar no sistema inteiro tanto de fora como de dentro do Vim. Testei também copiando e colando dentro do Vim partes de sites da internet.

Copiei da internet o texto abaixo e colei no arquivo "teste" criado com o Vim, salvei e fechei o arquivo. Copiei e colei o texto acima do rc.local, para não dar engano, e depois abri o arquivo "teste" e copiei e colei do Vim:

Viva o Linux - A maior comunidade GNU/Linux da América ...
https://www.vivaolinux.com.br

E as opções normais do Vim para copiar e colar também funcionam:
  • +y - copiar, funciona dentro e fora do Vim;
  • +p - colar, mas somente dentro do Vim.

Caso queira, desfaça a troca, salve e saia e teste abrindo um arquivo com o Vim e verá que a opção "Copiar" do botão direito desabilitou e/ou o copiar não funciona mais do Vim para outro programa.

Você pode criar o arquivo ~/.vimrc ou /etc/vimrc ou /etv/vim/vimrc.local (dependendo da distribuição) e acrescentar as três linhas, mas algumas vezes funciona outras não.

Tenha cuidado ao alterar o defaults.vim, somente altere o recomendado.

O problema de alterar o arquivo defaults,vim é que ao atualizar o Vim esse arquivo poderá ser substituído e a configuração volta ao padrão. Quando você perceber que o Vim não copia e cola mais com o mouse, deverá verificar o defaults.vim.

Isso acontece porque são várias distribuições, várias interfaces gráficas (Xfce, Gnome, Kde etc), vários shell, vários terminais etc, e isso vale para vários programas do Linux.

O vimrc em /etc/vim/vimrc aconselha criar o vimrc.local no Debian para configurações globais:

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

Porém, eu testei setar com o /etc/vim/vimrc.local no Debian e a opção set mouse=r não funcionou, enquanto outras opções como, por exemplo, set number funcionou. Acredito que o padrão para todas distribuições é ~/.vimrc.

Outro exemplo, a opção set clipboard=unnamedplus funciona somente com o X11 e depende da interface gráfica utilizada.

No Debian com Gnome e uma versão diferente do Vim, a opção set mouse=r no arquivo /etc/vim/vimrc.local pode funcionar, mas no Debian com Xfce e outra versão do Vim (ou a mesma) pode não funcionar.

O próprio Vim explica no comentário da linha ~76 do código em defaults.vim e na documentação em http://vimdoc.sourceforge.net/htmldoc/options.html#'mouse':

In many terminal emulators the mouse works just fine. By enabling it you can position the cursor, Visually select and scroll with the mouse.

Em muitos emuladores de terminal, o mouse funciona perfeitamente. Ao ativá-lo, você pode posicionar o cursor, selecionar visualmente e rolar com o mouse.

Dependendo, mesmo com mouse=a pode-se selecionar, copiar e colar com o mouse usando a tecla shift junto.

Isso acontece porque o Linux tem duas áreas de transferência (clipboard) distintas. Uma é a área de transferência de seleção (registro * no Vim), a outra é para o sistema (o que inclui crtl c, crtl v, o mouse, etc [registro + no Vim]).

Grosso modo, uma das áreas de transferência é a do programa, no caso o Vim, e a outra área de transferência é a do sistema, vamos por assim dizer. E quando você seleciona e copia alguma coisa, uma hora vai para uma área, outra hora vai para outra, dependendo de onde você está copiando (do programa ou do sistema) e depende também das configurações feitas no programa e no sistema.

Resumindo a ópera: somente alterando o arquivo defaults.vim temos certeza de que as configurações das áreas de transferência funcionam globalmente e podemos usar o mouse para selecionar, copiar e colar de e no Vim. Lembrando que esse arquivo, caso você instalou o Vim pelo gerenciador de pacotes, ao atualizar ele pode mudar automaticamente e você terá que refazer a configuração, mas daí você perceberá quando o Vim deixar de copiar e colar. Porém, não precisa se preocupar, a configuração feita durará bastante tempo.

O Vim é um editor de texto projetado para sistemas UNIX (mas tem para Windows, Macintosh etc), no caso do Linux você pode instalar diferentes interfaces gráficas (Xfce, KDE, Gnome etc), por isso o Vim vem no padrão sem o popular crtl c crtl v (o que inclui o mouse) habilitado para o sistema.

Você pode transformar o Vim num IDE (Ambiente de Desenvolvimento Integrado), se quiser.

Muitas pessoas não gostam do Vim porque "dá trabalho" aprender a usar ele, mas não é difícil, pode dar um pouco de trabalho e esforço, porém, depois não esquece mais e a produtividade e a rapidez aumentam.

Veja a documentação do Vim sobre o clipboard e o mouse, que confirma praticamente tudo o que foi dito:

'mouse'                 string  (default "", "a" for GUI, MS-DOS and Win32)
                        global
                        {not in Vi}
        Enable the use of the mouse.  Only works for certain terminals
        (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
        sysmouse and Linux console with gpm).  For using the mouse in the
        GUI, see |gui-mouse|.
        The mouse can be enabled for different modes:
                n       Normal mode
                v       Visual mode
                i       Insert mode
                c       Command-line mode
                h       all previous modes when editing a help file
                a       all previous modes
                r       for |hit-enter| and |more-prompt| prompt
        Normally you would enable the mouse in all four modes with:
                :set mouse=a
        When the mouse is not enabled, the GUI will still use the mouse for
        modeless selection.  This doesn't move the text cursor.

        See |mouse-using|.  Also see |'clipboard'|.

        Note: When enabling the mouse in a terminal, copy/paste will use the
        "* register if there is access to an X-server.  The xterm handling of
        the mouse buttons can still be used by keeping the shift key pressed.
        Also see the 'clipboard' option.
e
'clipboard' 'cb'        string  (default "autoselect,exclude:cons|linux"
                                                  for X-windows, "" otherwise)
                        global
                        {not in Vi}
                        {only in GUI versions or when the |+xterm_clipboard|
                        feature is included}
        This option is a list of comma separated names.
        These names are recognized:

        unnamed         When included, Vim will use the clipboard register '*'
                        for all yank, delete, change and put operations which
                        would normally go to the unnamed register.  When a
                        register is explicitly specified, it will always be
                        used regardless of whether "unnamed" is in 'clipboard'
                        or not.  The clipboard register can always be
                        explicitly accessed using the "* notation.  Also see
                        |gui-clipboard|.

        unnamedplus     A variant of "unnamed" flag which uses the clipboard
                        register '+' (|quoteplus|) instead of register '*' for
                        all operations except yank.  Yank shall copy the text
                        into register '+' and also into '*' when "unnamed" is
                        included.
                        Only available with the |+X11| feature.
                        Availability can be checked with:
                                if has('unnamedplus')

        autoselect      Works like the 'a' flag in 'guioptions': If present,
                        then whenever Visual mode is started, or the Visual
                        area extended, Vim tries to become the owner of the
                        windowing system's global selection or put the
                        selected text on the clipboard used by the selection
                        register "*.  See |guioptions_a| and |quotestar| for
                        details.  When the GUI is active, the 'a' flag in
                        'guioptions' is used, when the GUI is not active, this
                        "autoselect" flag is used.
                        Also applies to the modeless selection.

        autoselectml    Like "autoselect", but for the modeless selection
                        only.  Compare to the 'A' flag in 'guioptions'.

        html            When the clipboard contains HTML, use this when
                        pasting.  When putting text on the clipboard, mark it
                        as HTML.  This works to copy rendered HTML from
                        Firefox, paste it as raw HTML in Vim, select the HTML
                        in Vim and paste it in a rich edit box in Firefox.
                        You probably want to add this only temporarily,
                        possibly use BufEnter autocommands.
                        Only supported for GTK version 2 and later.
                        Only available with the |+multi_byte| feature.

        exclude:{pattern}
                        Defines a pattern that is matched against the name of
                        the terminal 'term'.  If there is a match, no
                        connection will be made to the X server.  This is
                        useful in this situation:
                        - Running Vim in a console.
                        - $DISPLAY is set to start applications on another
                          display.
                        - You do not want to connect to the X server in the
                          console, but do want this in a terminal emulator.
                        To never connect to the X server use:
                                exclude:.*
                        This has the same effect as using the |-X| argument.
                        Note that when there is no connection to the X server
                        the window title won't be restored and the clipboard
                        cannot be accessed.
                        The value of 'magic' is ignored, {pattern} is
                        interpreted as if 'magic' was on.
                        The rest of the option value will be used for
                        {pattern}, this must be the last entry.

Referências:
Página anterior    

Páginas do artigo
   1. Compilação e instalação do Vim
   2. Habilitando copiar e colar
Outros artigos deste autor

Como ter o ChatGPT no seu site em PHP

Instalar e configurar o Nftables com exemplos básicos de configurações

Squid - Entendendo um pouco as configurações

Compilação do Kernel

Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário

Leitura recomendada

Utilizando o Buffer de Gravação no Editor Vim

Como preparar o Vim/Neovim para corrigir ortografia em português

Como Turbinar sua Produtividade com VIM - Guia Definitivo do Desenvolvedor

Utilização do Vim para iniciantes

GitHub Copilot - Inteligência Artificial no NeoVim

  
Comentários
[1] Comentário enviado por maurixnovatrento em 07/10/2021 - 22:30h


Faço algo parecido no Slackware. Também costumo habilitar o clipboard do vim.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[2] Comentário enviado por danniel-lara em 08/10/2021 - 08:05h


Show , isso ajuda muito

[3] Comentário enviado por Buckminster em 08/10/2021 - 23:44h


[1] Comentário enviado por mauricio123 em 07/10/2021 - 22:30h


Faço algo parecido no Slackware. Também costumo habilitar o clipboard do vim.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


É um desafio.
Tentarei no Slack.

[4] Comentário enviado por Buckminster em 08/10/2021 - 23:45h


[2] Comentário enviado por danniel-lara em 08/10/2021 - 08:05h


Show , isso ajuda muito


Obrigado.

[5] Comentário enviado por maurixnovatrento em 10/10/2021 - 08:20h


[3] Comentário enviado por Buckminster em 08/10/2021 - 23:44h


[1] Comentário enviado por mauricio123 em 07/10/2021 - 22:30h


Faço algo parecido no Slackware. Também costumo habilitar o clipboard do vim.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


É um desafio.
Tentarei no Slack.


Se quiser já tenho um slackbuild do vim pronto no meu repositório.
https://github.com/mxnt10/Slackware15-Reposity/blob/master/Specific/vim.SlackBuild

Aí você modifica como você achar melhor pra você.

[6] Comentário enviado por diegomrodrigues em 16/10/2021 - 10:38h

Artigo interessante.
Parabéns!

Atenciosamente,
Diego M. Rodrigues

[7] Comentário enviado por Buckminster em 17/10/2021 - 02:49h


[6] Comentário enviado por diegomrodrigues em 16/10/2021 - 10:38h

Artigo interessante.
Parabéns!

Atenciosamente,
Diego M. Rodrigues


Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts