Vim mostra caracteres estranhos 91,92

23

ao usar o vim sobre o ssh eu copiei algum conteúdo de uma página da web para minha sessão ssh / vim e obteve o seguinte resultado

SIZE='df -h|grep $DISC|awk <91>{print $2}<92>'

aparentemente < 91 > e < 92 > defendo 'mas como posso pesquisar e substituir essas coisas e o que significa 91/92, como isso é codificado?

Porque 91/92 em ASCII significa \ e [

Obrigado por qualquer ajuda

    
por Jeremy S. 15.10.2010 / 15:33

4 respostas

22

O conteúdo da sua página da Web de origem foi reformatado com excesso de zelo. Sem dúvida, o texto deveria usar aspas simples (em linha reta) (ASCII 39 / 0x27, U + 0027) em vez de aspas simples (U + 2018 e U + 2019, que são 0x91 e 0x92 no CP1252 (também conhecido como MS-ANSI). e WINDOWS-1252; uma codificação comum de 8 bits no Windows)).

O Vim está mostrando os códigos hexadecimais porque eles não são válidos em qualquer codificação que o Vim esteja usando (provavelmente UTF-8). Se você estiver editando o texto que já foi salvo em um arquivo, poderá recarregar o arquivo como CP1252 com :e ++enc=cp1252 ; isso deve tornar as aspas curvas visíveis. Mas não há nenhum motivo real para recarregá-lo como CP1252, apenas exclua os caracteres 0x91 e 0x92 e substitua-os por aspas simples.

    
por 15.10.2010 / 21:14
24

91 e 92 são os códigos hexadecimais para abrir e fechar a apóstrofo (cota única) na versão padrão do MS Windows da codificação latin1 / ISO-8859-1, que é mais especificamente chamada de cp1252/Windows-1252 (em que cp significa página de códigos).

Esses caracteres são inseridos com mais frequência por pessoas que copiam conteúdo de documentos do Word / e-mails do Outlook como parte do recurso "Citações inteligentes". Outros caracteres de problema nesta página de códigos são hexadecimais 93/94, que são aspas duplas abertas e próximas, ponto de marcação (•) e ligadura OE (œ e Œ). Você pode ver uma lista completa dos "personagens problemáticos", aqueles que não mapeiam diretamente para ISO-8859-1 ou UTF-8 com o mesmo código, no Página Wikipédia para cp1252 destacada em verde.

Se tudo que você quer é abrir o arquivo na codificação correta, então use a opção ++ enc = cp1252 para o comando: e:

:e ++enc=1252 filename.txt

Você pode substituir um código hexadecimal incorreto no Vim pelo comando substituto (: s) e uma das substituições de código:

    \d123   decimal number of character
    \o40    octal number of character up to 0377
    \x20    hexadecimal number of character up to 0xff
    \u20AC  hex. number of multibyte character up to 0xffff
    \U1234  hex. number of multibyte character up to 0xffffffff

Para alterar o hexadecimal 91/92 caracteres que você precisa fazer:

:%s/[\x91\x92]/'/g
    
por 21.12.2010 / 16:50
3

Use iconv para converter o arquivo de texto de CP1252 para UTF-8 antes de abrir.

iconv -f cp1252 -t utf8 inputfile.csv > outputfile.csv

No Mac OS, use isto:

iconv -f cp1252 -t UTF8-MAC inputfile.csv  > outputfile.csv
    
por 15.10.2010 / 19:35
-2

Eles, na verdade, representam hexagésimo 91 e 92, que na página de código do Windows são aspas simples de abertura e fechamento (‘e’ - Alt-0145 e Alt-0146).

Tente a seguinte pesquisa / substituição:

:s%/\<9[12]\>/'/g
    
por 15.10.2010 / 17:13

Tags