Insira um único número sucessivo no início de cada linha em um arquivo de texto com o Vim

1

Suponha que eu tenha um arquivo de texto contendo algumas strings:

string_g
string_r
string_qqwer
string_p
string_f
string_3qw
string_e
string_qw

E preciso inserir números crescentes ou decrescentes antes das strings:

001 string_g
002 string_r
003 string_qqwer
004 string_p
005 string_f
006 string_3qw
007 string_e
008 string_qw

Apenas para evitar confusão:

Eu não quero números de linha a serem exibidos. Eu sei como isso funciona. O que eu quero é um número real no começo de cada string dentro do texto.

Existe uma maneira de fazer isso automaticamente com vim ?

Eu posso marcar o começo de cada string com CTRL - V então digite : para entrar no modo de execução, o que me permitirá execute o comando na seleção via :'<,'> , mas estou preso lá.

    
por lord.garbage 01.07.2014 / 12:41

2 respostas

4

Use o comando unix externo nl .

:'<,'>!nl -w 3 -n rz -s' '
    
por 01.07.2014 / 12:49
1

Com vim apenas (não use o comando externo):

let i=1 | '<,'>g/^/ s//\=printf("%03d ",i) / | let i+=1

Altere let i=1 para o número que você deseja iniciar.

    
por 01.07.2014 / 13:30