vim colar da área de transferência no terminal

1

Estou tentando escrever um mapeamento de modo de inserção para colar da área de transferência do sistema. Eu tenho isso:

imap <c-p> <c-o>:set paste<cr><c-r><c-r>+<c-o>:set nopaste<cr>

(Observe que isso deve funcionar de acordo com isto )

No entanto, quando invoco o mapeamento de chave, ele não funciona, ele pára na parte de colagem definida, então acabo com o modo de colar ativado.

Mas se eu faço todas aquelas chaves manualmente, então eu consigo o que eu quero ... então, o que é diferente quando os comandos estão sob um mapa de teclado? O que estou perdendo para fazer isso funcionar?

Eu também tentei isso:

imap <c-p> <esc>"+gP

Isso lança uma série de erros sobre o gP ser uma variável desconhecida, mas o mesmo mapeamento no modo normal funciona conforme o esperado ... então, o que há de diferente nos mapeamentos do modo de inserção?

    
por moljac024 31.01.2013 / 21:37

3 respostas

0

Você não precisa :set paste ao inserir o conteúdo da área de transferência com i_CTRL-R . Por causa do comando, o Vim já sabe que isso é da área de transferência. :set paste é para quando você cola diretamente do terminal (por exemplo, através do botão do meio do mouse); lá, o Vim não pode diferenciar entre os caracteres digitados ou colados, e precisa dessa dica.

Para evitar o recuo automático, use i_CTRL-R_CTRL-O .

    
por 01.02.2013 / 08:47
1

Eu ainda não sei o que há de errado com o primeiro mapeamento que tentei, pois acredito que deveria funcionar, mas olhando para a documentação do vim (especificamente: help i_CTRL-R) eu encontrei uma solução melhor:

inoremap <c-p> <c-r><c-o>+

Nos documentos:

CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} i_CTRL-R_CTRL-O Insert the contents of a register literally and don't auto-indent. Does the same as pasting with the mouse ||. Does not replace characters! The '.' register (last inserted text) is still inserted as typed. {not in Vi}

    
por 01.02.2013 / 09:59
0

Esse segundo comando imap deve funcionar bem. Pelo que entendi, ele deve sair do modo de inserção, colar de uma das pranchetas do sistema (+) e deixar o cursor após o texto colado.

Eu suspeito que você está executando o vi não vim ou o seu vim está no modo compatível. A documentação para ["x] gP (:help gP) diz" não no vi ", então esse pode ser o seu problema

    
por 31.01.2013 / 22:32

Tags