Enquanto estiver usando WSL / Bash para Windows Eu quero ser capaz de usar y
yy
3y
e p
da mesma forma que sempre trabalho no vim, mas a conexão com a área de transferência compartilhada por todos os aplicativos, não para área de transferência interna de vim ... Eu já tenho ditto para gerenciar área de transferência história.
Parece que o Vim já possui uma opção integrada para sincronizar o buffer de copiar / colar com a área de transferência do sistema ... No entanto, o problema ao executar o WSL é que você realmente precisa usar /mnt/c/Windows/System32/clip.exe
para acessar a área de transferência ... Então, mesmo que eu queira para poder usar:
set clipboard^=unnamed
Ainda não parece ter suporte para WSL.
Entendo que o neovim tem isso como uma opção, mas não quero experimentar o neovim agora ...
Por enquanto, a coisa mais próxima de uma solução alternativa que eu encontrei é:
nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
Mas, na minha opinião, essa é uma solução realmente horrível ... Torna a cópia um processo de duas etapas ...
Claro que posso copiar e colar com o mouse / shift + ins, mas acho que deve haver uma maneira de fazer com que essa sincronização funcione corretamente no Vim.
fonte
Respostas:
Estou ciente de que esta é uma pergunta muito antiga, mas recentemente encontrei uma boa solução. Após muita frustração, me deparei com essas maneiras de acessar a área de transferência do sistema Windows, copiando e colando.
Copiando, com a versão vim> = 8.0.1394, conforme observado em outra resposta https://vi.stackexchange.com/a/15190
Colagem, mapeamento para comandos de registro falsos, ou seja, "= p ou" + p ou o que for.
Colar com o botão direito do mouse funciona, mas é insatisfatório se você não quiser usar o mouse
fonte
vi
eu adicioneinnoremap <S-Insert> :r !powershell.exe -Command "& {Get-Clipboard}"<Enter>
noremap "+y :exe 'norm a'.system('echo '.shellescape(join(v:event.regcontents, "\<CR>")).' | clip.exe')<CR>
(o que não funciona ...)Que tal isso?
uname
é um comando de terminal do Linux que retorna informações do sistema operacional, de forma que ele retornaráLinux
para o WSL. Enquanto que com o-r
sinalizador, o comando retorna as informações de liberação do SO, portanto deve incluir "Windows".TextYankPost
é um evento vim (veja:h TextYankPost
emvim
), que detecta sua atividade de arrancamento de texto.clip.exe
é um comando do prompt de comando do Windows na WSL (vejaCLIP /?
no prompt de comando) que copiatext
ou retorna de umcommand
para o clipbord viatext | clip.exe
oucommand | clip.exe
. Aqui, a funçãoclip.exe
é executada do vim pela vimsystem
.fonte
has('wsl')
vez desystem('uname -r') =~ "Microsoft"
.Fiz um PR para o suporte da WSL para falsificar há algum tempo.
Veja o vimawesome sobre como instalá-lo;
help fakeclip
para uso.fonte