Somehow, the space characters are represented by
^@
in vi.
Não é vi
que fez isso. Embora você digite linhas de comando em shells com espaços entre os argumentos, as linhas de comando são na verdade seqüências discretas de strings internamente, não uma string longa separada por espaço. O shell separou a linha de comando em sequências de argumentos individuais antes que o comando fosse iniciado.
Em C, as strings são terminadas com caracteres NUL e são mostradas como ^@
.
How can one replace special characters particularly those that start with carat symbol?
Para digitar esses caracteres, você deve prefixá-los com Controle - v para o próximo caracter literal.
Por exemplo, neste caso: Controle - v seguido por Controle - @ .
O caractere especial que introduz os próximos caracteres literais é normalmente Controle - v , mas na verdade é configurável. Digite stty -a
para descobrir o que está definido. Procure lnext
na saída.