Infra - Linux

Substituição de Caracteres Não-Imprimíveis com Vim

Veja como efetuar a substituição de caracteres não-imprimíveis com Vim.

por Rubens Queiroz de Almeida



Para criar os documentos da Dicas-L, às vezes eu tenho que copiar arquivos que são criados em editores de textos. Ao copiar e colar o texto no editor vim, caracteres como abre aspas e fecha aspas, são representados por algo como "~S" e "~T". Embora a representação destes caracteres seja feita com dois caracteres, na verdade trata-se de apenas um.

Para substituir estes caracteres pelo que desejamos, precisamos primeiramente identificar o código binário destes caracteres. Fazemos isto posicionando o cursor sobre o caracter desejado e em seguida digitamos ga.

Como exemplo, ao posicionarmos o cursor sobre o caractere "c", e digitarmos ga, temos, no rodapé do vim, a seguinte informação:

  <c>  99,  Hex 63,  Octal 143

Primeiramente, temos o caractere, c, em seguida a representação decimal (99), a representação hexadecimal (63) e por fim a representação octal (143)

Podemos fazer isto com qualquer caractere do texto. Para substituir este caractere por outro, executamos o seguinte comando:

  %s/\%x63/A/g

O comando acima irá substituir todos os caracteres "c" pelo caractere "A".

Isto pode ser feito para qualquer caractere, até os não imprimíveis. Note que no exemplo eu utilizei o formato hexadecimal, indicado pela letra "x" antes do código do caractere. Eu poderia ter usado o formato decimal:

  %s/\%d99/A/g

ou octal:

  %s/\%o143/A/g

Referência: Find & Replace non-printable characters in vim

Rubens Queiroz de Almeida

Rubens Queiroz de Almeida - Mantenedor do site Dicas-L (http://www.dicas-l.com.br).