No Vim como apagar a última palavra e substituir por outra com um mapa?

0

É um tipo de digitação que eu faço muito:

Quando estou em toda parte em uma palavra que eu gosto de copiá-lo, então eu tenho um simples

:nmap <Leader>y yiw

E então eu estou indo para uma outra palavra (em todos os lugares sobre ele) para substituir por um yanked, então eu escrevo

:nnoremap cp "_diwP

(cp para limpar e colar)

exemplo:

palavra anterior: "olá"

Funciona perfeitamente se eu faço cp em "bar" (substitui com o anterior puxado)

lorem ipsum bar foo
> lorem ipsum hello foo

mas quando a palavra está no final da linha (ex com 'foo') dá

lorem ipsum bar foo
> lorem ipsum barhello

Então eu tenho um

:nnoremap cP "_diwp

A questão é como "mesclar"

:nnoremap cp "_diwP
:nnoremap cP "_diwp

em um mapa?

Obrigado pela ajuda.

    
por Hettomei 21.06.2013 / 11:30

2 respostas

0

Você pode usar ciw em vez de diw e, em seguida, uma pasta no modo de inserção:

:nnoremap cp "_ciw<C-r>"<Esc>

Ou use sempre P , mas exclua a palavra original depois:

:nnoremap cp "_yiwPl"_de

"_yiw é ir para o início da palavra original ( b falha se o cursor já estiver no primeiro caractere da palavra, e soluções alternativas como lb também têm armadilhas a menos que :set ve+=onemore ). / p>     

por 26.06.2013 / 20:47
1

Meu plug-in ReplaceWithRegister oferece um mapeamento gr semelhante ao seu, que lida com casos especiais como seu.

Além disso, você pode estar interessado no plug-in Smartput ; ele altera os comandos p / P para ajustar automaticamente espaços, vírgulas, etc. Com ele, você também pode atingir sua meta (embora tenha de usar :nmap , não :nnoremap para ativar o plug-in seus mapeamentos).

    
por 21.06.2013 / 11:52

Tags