Como copiar e colar texto de outros programas para o NeoVim? [RESOLVIDO]

1. Como copiar e colar texto de outros programas para o NeoVim? [RESOLVIDO]

Luc
arksdf

(usa Manjaro Linux)

Enviado em 08/01/2020 - 12:51h

Como eu copiaria um texto da Wikipédia, por exemplo?
Eu sei que no Vim era possivel usando o GVim, mas como fazer isso no NeoVim?


  


2. Re: Como copiar e colar texto de outros programas para o NeoVim?

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/01/2020 - 15:37h

Não sei como o Neovim funciona, mas deve ser igual ou mais fácil que no Vim...

Resposta curta, você deve olhar no manual..

O 'vim' não tem suporte à área de transferência do X, que, na verdade, é uma cópia da área de transferência do Windows.
Nos *NIX, a gente (eu pelo menos) uso por padrão o PRIMÁRIO, mas a área de transferência também acaba sendo utilizada bastante (assim podemos segurar duas seleções de uma vez só!)..

Você precisa entender que nos *NIX, quando você seleciona um texto e copia com Ctrl+C, o que na realidade ocorre é que o programa que contém o texto selecionado toma a posse da área de transferência, mas o texto _não_ é copiado para a área de transferência ainda (como ocorre nos Windows da vida). De forma que, se você fechar o programa que contém o texto selecionado, você não conseguirá colar o texto... Alguns gerenciadores de área de transferência mudam esse comportamento e o texto fica armazenado no gerenciador de área de transferência, que por sua vez sempre terá a posse da área de transferência (como no Windows).

Bom dito isso, com o 'vim', você deve usar as funções de copiar e colar do seu emulador de terminal, por exemplo, geralmente Ctrl+Shift+C e Ctrl+Shift+V. Para selecionar um texto com o mouse, aperte e segure o Shift e faça sua seleção (do contrário o vim vai interceptar o sinal do seu mouse). Lembre-se que neste caso, a seleção está usando os mecanismos do emulador de terminal.

Para que a seleção visual do vim funcione com a área de transferência, você deve instalar o pacote 'gvim' e depois pode indicar o registro em que o texto será copiado manualmente.
No *seu* caso, acredito que o Neovim já deva vir com suporte à área de transferência..

Registros:
*      #unnamed ou PRIMÁRIO
+ #unnamedplus ou área de transferência


Assim, para copiar para a área de transferência em modo visual:
"+y    #copia o texto seleciona
"+yy #copia a linha na posição do cursor


Para colar:
"+p 


Por padrão, o vim/gvim devem usar o registro do unnamed (PRIMÁRIO) para copiar e colar. Você pode configurar para usar a área de transferência (~/.vimrc):
set clipboard=unnamedplus

É mais ou menos isso, mas copiar e colar texto no *NIX pode ser meio complicado para quem está acostumado com a área de transferência do RWuindows.
Pode ser que no Neovim seja muito mais fácil, não sei.. Mas parabéns por usar o Neovim, o desenvolvedor original do Neovim é brazuka.


3. Re: Como copiar e colar texto de outros programas para o NeoVim? [RESOLVIDO]

Izaias
izaias

(usa LMDE)

Enviado em 08/01/2020 - 22:20h

arksdf escreveu:

Como eu copiaria um texto da Wikipédia, por exemplo?
Eu sei que no Vim era possivel usando o GVim, mas como fazer isso no NeoVim?


Sim, no Gvim é possível tal função, uso sempre. Mas no Neovim (que já usei e não vi muita diferença), não sei o que procede se não funciona, já que este usa o mesmo vimrc

Acrescente isto ao seu vimrc (só funciona no Gvim):

"Copia do Vim para o clipboard
set clipboard=unnamedplus
set clipboard=unnamed

"Copy/Paste/Cut
if has('unnamedplus')
set clipboard=unnamed,unnamedplus
endif


"Ctrl+c - copiar
vmap <C-c> "+yi

"Ctrl+x - recortar
vmap <C-x> "+c

"Ctrl+v colar
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

"Ctrl+a para selecionar tudo
noremap <C-a> gggH<C-O>G
inoremap <C-a> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-a> <C-C>gggH<C-O>G
onoremap <C-a> <C-C>gggH<C-O>G
snoremap <C-a> <C-C>gggH<C-O>G
xnoremap <C-a> <C-C>ggVG

"Ctrl+s para salvar
noremap <C-s> :w!<CR>i
vnoremap <C-s> <C-C>:w!<CR>i
inoremap <C-s> <C-O>:w!<CR>i


Faça o teste.


4. Solução

Luc
arksdf

(usa Manjaro Linux)

Enviado em 11/01/2020 - 19:57h

izaias escreveu:
Sim, no Gvim é possível tal função, uso sempre. Mas no Neovim (que já usei e não vi muita diferença), não sei o que procede se não funciona, já que este usa o mesmo vimrc


Quanto ao GVim eu já sabia, tanto que eu pensei que para o neovim eu precisaria do neovim-qt, que é uma interface grafica para o neovim.

marimbondo2 escreveu:
Mas parabéns por usar o Neovim, o desenvolvedor original do Neovim é brazuka.


Não sabia que ele é brasileiro...

Mas enfim, atravez do comando :checkhealth eu consegui ver que faltava uma ferramenta para o clipboard:

health#provider#check
========================================================================
## Clipboard (optional)
-WARNING: No clipboard tool found. Clipboard registers ("+ and "*) will not work.
-ADVICE:
-:help clipboard


e essas são minhas opções:

 *clipboard-tool*
The presence of a working clipboard tool implicitly enables the '+' and '*'
registers. Nvim looks for these clipboard tools, in order of priority:

- |g:clipboard|
- pbcopy, pbpaste (macOS)
- wl-copy, wl-paste (if $WAYLAND_DISPLAY is set)
- xclip (if $DISPLAY is set)
- xsel (if $DISPLAY is set)
- lemonade (for SSH) https://github.com/pocke/lemonade
- doitclient for SSH http://www.chiark.greenend.org.uk/~sgtatham/doit/
- win32yank (Windows)
- tmux (if $TMUX is set)


tudo o que eu tive que fazer foi instalar uma delas, no caso o xsel e tudo funcionou.
então só acrescentei isso ao arquivo init.vim
vnoremap <C-v> "+P<cr>
vnoremap <C-c> y<cr>
vnoremap <C-x> "+x<cr>


não é 100% ainda mas tá quase lá.

fonte:https://github.com/equalsraf/neovim-qt/issues/621






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts