O comando global "g"

Last updated 7 months ago

Buscando um padrão e gravando em outro arquivo:

:'a,'b g/^Error/ . w >> errors.txt

Apenas imprimir linhas que contém determinada palavra, isto é útil quando você quer ter uma visão sobre um determina aspecto do seu arquivo vejamos:

:set nu ..... habilita numeração
:g/Error/p .. apenas mostra as linhas correspondentes

Para mostrar o as linhas correspondentes a um padrão, mesmo que a numeração de linha não esteja habilitada use :g/padrão/\#.

numerar linhas:

:let i=1 | g/^/s//\=i."\t"/ | let i=i+1

Outro modo de inserir números de linha

:%s/^/\=line('.').' '
: ............ comando
% ............ em todo o arquivo
s ............ substituição
/ ............ inicio da busca
^ ............ começo de linha
/ ............ inicio da substituição
\=line('.') .. corresponde ao nº da linha atual
.' ' ........ concatena um espaço após o nº

Para copiar linhas começadas com Error para o final do arquivo faça:

:g/^Error/ copy $

Obs: O comando ‘copy’ pode ser abreviado ‘co’ ou ainda pode-se usar ‘t’ para mais detalhes:

:h co

Como adicionar um padrão copiado com ‘yy’ após um determinado padrão?

:g/padrao/+put!
:g/padrao/.put='teste'

Entre as linhas que contiverem ‘fred’ e ‘joe’ substitua:

:g/fred/,/joe/s/isto/aquilo/gic

As opções ‘gic’ correspondem a global, ignore case e confirm, podendo ser omitidas deixando só o global.\

Pegar caracteres numéricos e jogar no final do arquivo:

:g/^\d\+.*/m $

Inverter a ordem das linhas do arquivo:

:g/^/m0

Apagar as linhas que contém Line commented:

:g/Line commented/d

Apagar todas as linhas comentadas

:g/^\s*#/d

Copiar determinado padrão para um registrador:

:g/pattern/ normal "Ayy

Copiar linhas que contém um padrão e a linha subsequente para o final:

:g/padrão/;+1 copy $

Deletar linhas que não contenham um padrão:

:v/dicas/d ..... deleta linhas que não contenham `dicas'

Incrementar números no começo da linha:

:.,20g/^\d/exe "normal! \<c-a>"

Sublinhar linhas começadas com Chapter:

:g/^Chapter/t.|s/./-/g
: ........ comando
g ........ global
/ ........ inicio de um padrão
^ ........ começo de linha
Chapter .. palavra literal
/ ........ fim do parão
t ........ copia
. ........ linha atual
s ........ substitua
/ ........ inicio de um padrão
. ........ qualquer caractere
/ ........ início da substituição
- ........ por traço
/ ........ fim da substituição
g ........ em todas as ocorrências