O caractere separador de unidade ( US
), também conhecido como IS1
, está na classe de caractere cntrl
e não é não na classe de caractere print
. É um caractere de controle que se destina a organizar o texto em grupos, para programas projetados para usar essas informações . Em geral, os caracteres não imprimíveis provavelmente serão interpretados e renderizados de forma diferente em diferentes programas ou ambientes.
O motivo pelo qual você está vendo isso representado como ^_
no Vim é porque o Vim é um editor interativo. Ele pode renderizar caracteres não imprimíveis livremente, desde que o caractere binário correto seja gravado no disco.
Não é possível obter o mesmo comportamento no shell, pois os programas shell do Unix são gravados para operar e transmitem texto simples entre si. Quando você usa cat
de um arquivo, o texto que é gravado no terminal deve ser o que está realmente no arquivo.
Isso deixa o dispositivo terminal para interpretar o caractere. E acontece que alguns emuladores de terminal fazem renderizar o caracter de US
de forma diferente dos outros. Em gnome-terminal
(ou qualquer terminal vte
-based), o caractere será renderizado como uma caixa contendo o código hexadecimal 001F
. Em xterm
ou rxvt
, o personagem é realmente invisível.