Colar cadeia de formatação ou colar-com-substituir

0

No Vim, posso fornecer uma string de formato, puxá-la e colá-la com valores formatados em um intervalo ?. Um exemplo no Python 2 seria:

for i in range(1, 3): print "This is line %d" % i

Se isso não for possível no Vim, será no Emacs ou em outro editor?

    
por doubleshot 17.02.2012 / 15:55

2 respostas

0

Não está completamente claro para mim o que você quer, mas no Vim você poderia fazer algo assim:

:for i in range(line('$')) | call append(i+i, printf("this is line %d:", i+1)) | endfor

O motivo pelo qual eu uso " i+i " é que, conforme as linhas são inseridas no buffer, os números de linha são alterados e isso é corrigido. (Se você tiver um "ponto de partida" diferente no seu intervalo, seu algoritmo de correção terá que ser mais complicado.)

Ou se você quiser modificar as linhas existentes no buffer:

:for i in range(1, line('$')) | call setline(i, printf("this is line %2d: %s", i, getline(i))) | endfor

É claro que, se você não quiser alterar o buffer, mas apenas imprimir na tela, use "echo" em vez de "call" e remova os blocos append () / setline () ao redor do printf () .

Veja:

:help :for
:help :call
:help :echo
:help range()
:help line()
:help append()
:help setline()
:help getline()
:help printf()
    
por 17.02.2012 / 20:02
1

No Emacs, tente:

M: (dotimes (i 3) (insert (format "This is line %2d.\n" (1+ i))))

Aqui M: significa eval-expression

    
por 17.02.2012 / 18:04

Tags