Aviso: Sou totalmente ignorante sobre como os teclados da Apple com cmd, em vez de ctrl, interagem com o vim, portanto, talvez seja necessário alterar ou ajustar alguns desses recursos.
A maneira correta de colar no vim é usar o comando p
. Para colar da área de transferência do sistema, você usaria "*p
. Assim, a maneira padrão de fazer as coisas seria deixar o modo de inserção e "*pa
(o a
, é claro, entra novamente no modo de inserção).
Se você deseja ter um atalho de teclado para usar no modo de inserção, parece natural fazer algo como:
inoremap <c-v> <esc>"*pa
(Isto é: na verdade digite o que está lá em vez de pressionar ctrl + v e escape).
À primeira vista, parece que isso deve fornecer o comportamento que você quer - é apenas automatizar o processo de colagem padrão que descrevi acima. Mas isso não acontece. O Vim trata todas as partes de um comando como parte do mesmo bloco de undo, e o próprio modo de inserção do vim é uma espécie de comando.
No entanto, você pode iniciar manualmente um novo bloco de desfazer enquanto estiver no modo de inserção usando ctrl + g seguido por u
(sim, eu sei, essa chave parece não ser parecida com vim, mas lá vai você). Então, você pode alterar o remapeamento de chaves da seguinte forma:
inoremap <c-v> <c-g>u<esc>"*pa
Tudo isso funcionará com ctrl + v (Acabei de testá-lo no Windows e ele funciona lá, pelo menos), você pode precisar usar algo diferente (diferente de <c-v>
) para atalhos baseados em cmd dentro vim. Se você estiver usando um teclado da Apple, isso implica em OSX - se cmd + v for um atalho do sistema, não tenho certeza do que seria prioridade. Um pouco de googling superficial sugere que você pode precisar mexer em alguma configuração no nível do SO para obter o cmd funcionando corretamente com o vim.