Tente este mapeamento.
:inoremap <F2> <CR><C-R>=repeat(' ',col([line('.')-1,'$'])-col('.'))<CR><C-O>:.retab<CR>
Quando você digita F2 (ou qualquer tecla que você escolher para o mapeamento), o Vim irá inserir uma nova linha ( <CR>
) seguida por um número de espaços ( <C-R>=repeat(' ',...)
) igual à diferença entre o número da coluna do final da linha anterior ( col([line('.')-1,'$'])
) e o número da coluna atual ( col('.')
), então executar :retab
na linha atual para substituir esses espaços por tabulações e / ou espaços de acordo com sua configuração de 'expandtab'. / p>
Editar
Esse mapeamento requer que você esteja no modo de inserção. Eu estava pensando que você digitaria a chave do mapa depois de digitar Hello e antes de digitar World. Para voltar e inserir essa nova linha no modo normal, use este mapeamento.
nnoremap <F2> i<CR><C-R>=repeat(' ',col([line('.')-1,'$'])-col('.'))<CR><Esc>:.retab<CR>